• ベストアンサー

JavaScript Eventのタイミング

Eventの挙動を学ぶために、簡単なスクリプトを作成しました。 テキストボックスに文字列を入れて、Submitボタンを押すと、 テキストボックスの下に(innerHTMLで)入力文字が表示され、 ボタン自体も入力文字になるというものです。 しかし、テキストに文字を入力し、Submitを押してもボタン・innerHTMLともに文字は変化しません。このままリロードをすると変化します。 挙動からして、マウスクリック自体は反応していないが、リロードによりイベントハンドラが動作しているように見受けられます。 イベントハンドラはonclickに代入しているためなぜこのようになるのか わかりません。 できるだけ、JavascriptとHTMLを分離したく外だしのファイルで 実現したいと思っています。 考え方、(比較的平易な)参考資料などありましたら教えていただけないでしょうか? HTMLで<body onload="init()">として、JavaScriptでは以下のように記述しています。 function init(){ document.getElementById("button").click = change(); } function change(){ keyword = document.getElementById("keyword").value; document.getElementById("input").innerHTML = keyword; document.getElementById("button").value = keyword; }

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>document.getElementById("button").click = change(); というのはchange()の戻り値をオブジェクトのclickプロパティ(もしくはメソッド)に 代入しています。 とりあえず動かすには以下のいずれかがよろしいのでは document.getElementById("button").click = change; or document.getElementById("button").click = function(){change()};

sarusearch
質問者

お礼

おっしゃるとおり、戻り値になっていました。。 直りました。ありがとうございます

その他の回答 (1)

回答No.1

.clickが.onclickではなかろうか? へんすうには、varをつけるべきとか。

sarusearch
質問者

お礼

ありがとうございます。onclickにしてみました

関連するQ&A