アプリ版:「スタンプのみでお礼する」機能のリリースについて

<script>
ar=[
["A","B","C","D"],
["a","b","c","d"]
]

function begin(){
for (i=1;i<5;i++){
document.SOFA.i1.options[i]=new Option(ar[0][i]); ←
document.SOFA.i2.options[i]=new Option(ar[1][i]);
}
}
</script>
<body onload="begin();"

<select id="i1">
<option >A</option>
</select><br>

<select id="i2">
<option >a</option>
<br>

とすると、ちゃんとoptionに項目が追加できましたが
document.SOFA.Elements[0].options[i]=new Option(ar[0][i]); ←
document.SOFA.Elements[1].options[i]=new Option(ar[1][i]);
とIDの代わりにElementsを使うと項目が追加できません。
もともとできないのか、なにか間違っていて訂正すれば可能なのでしょうか?

A 回答 (2件)

こんにちは。



「SOFA」が何だか不明ですが、
 <form name="SOFA">
とかが親要素にあるものとして・・・

Elements → elements としても動作しませんか?
(javascriptでは大文字、小文字が区別されます)


※ name属性を要素名として使用するのは、時として取得できないことがあります。(予約語とかぶっている時とか・・)
    • good
    • 0

とりあえず#1さんと指摘通り、SOFAの指定と、


elementsの小文字化でなんとかなると思いますが

>for (i=1;i<5;i++){
としているのは、配列は0からはじまるので実際には
B,C,Dが追加されて、存在しないar[0][4]が参照されています
あまり良い書き方とは言えません。
もし勘違いされているならせめて
for (i=0;i<4;i++){
としましょう

また、formで値を受け渡すのであれば
valueの指定も必要になるので
new Option(ar[0][i],ar[0][i]));
的な書き方をしてしてください
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!