あなたの習慣について教えてください!!

下記のコードでf002は動きますが、f001が動きません。

scriptで作ったオプションメニューもonChangeが働くようにするには、いかがしたらよろしいでしょうか?


<script language="JavaScript"><!--

function f001(){
if (document.test.s1.value==2) alert("2が入力されました");
}

function f002(){
if (document.test.s2.value==2) alert("2が入力されました");
}

var i,ht=[];

i=0;
ht[i] = '<select onChange="f001()" id="s1" >';
for( var i=1; i<=5;)
ht[i] = '<option value='+(i)+(i==1?' selected':'')+'>'+(i++)+'</option>';
ht[i] = '</select>';
document.write('s1 =', ht.join(''));

// --></script>

<form name="test">
s2 =
<select onChange="f002()" id=s2>
<option value=1 selected>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
</select>
</form>

A 回答 (4件)

>どうやって内側に入れたらよろしいのでしょうか?



難しく考えずにformのなかにスクリプトタグを書けばいいですよね。
一応functionは分けておきます。

<script>
function f001(){
if (document.test.s1.value==2) alert("2が入力されました");
}
function f002(){
if (document.test.s2.value==2) alert("2が入力されました");
}
</script>

<form name="test">
<script>
var i,ht=[];
i=0;
ht[i] = '<select onChange="f001()" id="s1" >';
for( var i=1; i<=5;)
ht[i] = '<option value='+(i)+(i==1?' selected':'')+'>'+(i++)+'</option>';
ht[i] = '</select>';
document.write('s1 =', ht.join(''));
</script>
s2 =
<select onChange="f002()" id=s2>
<option value=1 selected>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
</select>
</form>
    • good
    • 0
この回答へのお礼

>formのなかにスクリプトタグを書けばいいですよね。

えぇ!!---そうなんですか。
スクリプトは、HEADの部分にしか書けないと思ってました。
というかHEADも記述してなかったですが・・・・

ありがとうございました。

お礼日時:2009/01/07 16:13

1 for( var i=1; i<=5;) の後に { が無いのはわざと? まずい様に見えますが?



2 ht[i] = '<option value='+(i)+(i==1?' selected':'')+'>'+(i++)+'</option>';
の中の (i++) で i の値が変って、ループ処理が破綻してないですか? 同じ行の ht[i] も変更後の i を使いたんですか?

どんな物が生成されたか、document.write と同じ内容を alert() で見てみる事をお勧めします。
    • good
    • 0

#1もそうですが、構造的に・・・


document.test.s1.value==2
となっていますが、
s1はtestの外側にありますよね?

突っ込みどころはたくさんありますが、動けばいいやというので
あればそのあたりをみなおしてみてください

この回答への補足

HTML Javascript まだ始めだして数日でして、とりあえず動くか試してる状況です。

>s1はtestの外側にありますよね?

そのとうりで、どうやって内側に入れたらよろしいのでしょうか?

補足日時:2009/01/07 12:08
    • good
    • 0

色々、、、まあいいや。



ht[i] += '<option value='+(i)+(i==1?' selected':'')+'>'+(i++)+'</option>';

+ が抜けてるからでないですか?
    • good
    • 0

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