質問: javascriptで作成したボタンを押した時に関数を呼び出したいのですが、なぜかボタンが作成された時に、ボタンを押したら呼び出したい関数が呼び出されてしまいます....。
回答: こんばんわ~♪ Javascript の関数は、 ┌──────── | 関数名() └──────── と記述すると、 その関数が実行されて、関数の戻り値が返されます。 いっぽう、 関数名のあとに () を付けない場合は、 関数そのものを指しますヽ(・ω・o 質問のソースを見ると、 ┌──────── | attachEvent( "onclick", test() ); └──────── のように、 関数名 test のあとに () を付けているので、 関数が実行されてしまっています。 また、 "onclick" には関数そのものではなく、 「関数 test() を実行した結果の戻り値」が セットされてしまっています。 イベントに関数をセットするときは、 ┌──────── | attachEvent( "onclick", test ); └──────── のように () を付けずに関数名を記述します。 あと、 イベントに関数を仕込むとき、 ブラウザによっては attachEvent が使えず、 エラーになってしまうことがあります。 イベントを仕込むメソッドは、 閲覧する人のブラウザ環境によって、 「addEventListener」と「attachEvent」に分かれます。 なので、 「addEventListener」が存在したら ┌──────── | addEventListener( ... ); └──────── それ以外の場合は ┌──────── | attachEvent( ... ); └──────── を使うようにしましょう・ω・)b' その場合のソースコードは、 三項演算子 ? を使って書くと、 ┌──────── | var btn = document.createElement("input"); | btn.id = "button1"; | btn.type = "button"; | btn.value = "ボタン"; | | btn.addEventListener ? | btn.addEventListener( "click", test, false ) : | btn.attachEvent( "onclick", test ); └──────── のようになります♪ 「addEventListener」のときは、 「onclick」ではなく、 on をつけずに「click」であることに注意してください'd(・ω・o