• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:selectのonChangeが動作しません)

selectのonChangeが動作しない

このQ&Aのポイント
  • createElementを使用してフォームを生成しているが、selectのonChangeが機能しない。
  • 質問者は、コンボボックスが変更されたらアラートを表示したいが、うまく機能しない。
  • 解決方法を教えてほしい。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

#1です。 >Slt.id = "stasel";」と記述しております。 大変失礼いたしました。 うっかり、見落としていました。 ただし、無条件でセレクト要素を追加しているので、対象とするclass="line"の要素が存在しない場合、空のセレクト要素になってしまうために、同じ行でoptions[0]が存在しないことでエラーになる可能性があります。(実はこれで勘違いしてしまいました) >コンボボックスが変更されたら、アラームを表示させるようにしたいのですが上手くいきません。 肝心なところを書き忘れていましたね。(これまた失礼いたしました)  //Slt.onChange = "alert('今だ')"; //この部分でselectにonChange を設定している  Slt.onchange = function(){ alert('今だ'); }; で、いけるかと思います。 他の方法としては、  Slt.addEventListener( "change", function(){~~}, false );  //for fx  Slt.attachEvent( "onchange" , function(){~~} );  //for IE などでイベントをセットする方法もあります。

googleoooo
質問者

お礼

回答ありがとうございます。 教えて頂いた通り、書き直しましたところ意図した通り動作しました。 この度は本当にありがとうございました。

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

何をどうしたいのかがよくわかりませんが、ご提示のものが動作すればよいのであれば… 最後の document.getElementById('stasel')でエラーになっていますので、 (該当するidの要素がないので) 想像するところセレクト要素を取得したいのでしょうから、セレクトを生成した時に  Slt.id = "stasel"; の定義をしておけば動作するようになります。 (querySelectorに未対応のブラウザだと動きませんが) でも、このままだと、ボタンを押される毎に同じidのセレクト要素が作成されることになってしまいます。 それなので、document.getElementById('stasel')も意図した要素が返されない可能性が…

googleoooo
質問者

補足

早速のご回答有難うございます。 まず、IDがないというご指摘ですが、23行目に「Slt.id = "stasel";」と記述しております。 ですので、IDがないのでエラーが出たとは思えないのですが間違っているでしょうか? もう1つの、「同じidのセレクト要素が作成される」という事ですが、ボタンを押したときに既に要素が作られていたら削除する仕様になっていますので、同じ要素が繰り返されることはありません。 一応関数として定義しているので、今回の質問には関係ないかと思い載せていませんでした。 querySelectorに未対応のブラウザについては、確認してみたいと思います

関連するQ&A

専門家に質問してみよう