JavaScriptのイベントハンドラに問題があり、何が間違っているのか本当に知りたいです。 これは問題です、私は暴露されたdivの幅を警告したい、しかし、ページがロードされるとすぐに、警告が表示されます。javascriptのイベントハンドラが正しく動作しない
は、ここにHTMLです:
<div id="mainContainer">
<div id="container_1" style="width:200px"></div>
<div id="container_2" style="width:100px"></div>
<div id="container_3" style="width:300px"></div>
<div id="container_4" style="width:150px"></div>
</div>
、ここでJSです:
dataRetrieving = {
getWidth:function(id){
var box = document.getElementById(id);
var tempResult = box.style.width;
return tempResult;
}
}
var container = document.getElementById("container_1");
container.onmouseover = function(){
alert(dataRetrieving.getWidth("container_1"));
};
が既に回答、ありがとう:D
私はあなたたちは私を与える任意のヒントをいただければと思います。
ありがとうございます!あなたはこのようなもので、あなたのonmouseover
を設定する必要があります
しかし、マウスがdivに入ることなくイベントがどのようにトリガされるのですか? 'getWidth'が' tempResult'を返すようにコードを変更し、 'container.mouseover'イベントハンドラの後でのみ結果を警告しますが、問題はまだ残っています。 PS:ああ、あなたのソリューションはうまくいきました。ちょっとだけもっと学びたいと思っています:D thanks – rockleegustavo
これはマウスの動きとは関係ありません。あなたが投稿した元のコードでは、 'getWidth'関数は' alert.'が呼び出される 'container.onmouseover = ...'行の一部として直ちに実行されます。今は、ただちに「警告」を呼びます。 (あなたはそれを単純化したので、今何が起こっているのか、なぜそれが起こっているのかを簡単に見てください。)上記で提案した編集を行うと、期待した結果が得られるはずです。 – ziesemer
あなたが望むようにコードを変更したところ、うまくいきました。私はちょうど 'container.onmouseover = alert(dataRetrieving.getWidth(" container_1 "))'が動作しない理由を知りたい:/ – rockleegustavo