- ベストアンサー
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; }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>document.getElementById("button").click = change(); というのはchange()の戻り値をオブジェクトのclickプロパティ(もしくはメソッド)に 代入しています。 とりあえず動かすには以下のいずれかがよろしいのでは document.getElementById("button").click = change; or document.getElementById("button").click = function(){change()};
その他の回答 (1)
- babu_baboo
- ベストアンサー率51% (268/525)
.clickが.onclickではなかろうか? へんすうには、varをつけるべきとか。
お礼
ありがとうございます。onclickにしてみました
お礼
おっしゃるとおり、戻り値になっていました。。 直りました。ありがとうございます