ホームページ >ウェブフロントエンド >CSSチュートリアル >「animate」関数が IE では動作するのに Chrome では動作しないのはなぜですか: JavaScript シャドウイングの問題ですか?
function animate() { var div = document.getElementById('demo'); div.style.left = "200px"; div.style.color = "red"; }
#demo { position: absolute; }
<p>
window.animate // global function Element.prototype.animate // element's own method<p>DOM 仕様によれば、グローバル イベント ハンドラー環境は、イベント処理中に要素のスコープをシャドウします。したがって、要素の 'animate' メソッドは、グローバル 'animate' 関数よりも優先されます。
10. Let the current event handler value be the result of the following steps: ... 4. Let the target environment be the lexical environment scope. ... 6. If the element is non-null, then a. Let the target environment be the result of NewObjectEnvironment(the element, the target environment).<p>これを修正するには、いくつかの方法を使用できます。
function animate__() { var div = document.getElementById('demo'); div.style.left = "200px"; div.style.color = "red"; }
document.getElementById('demo').addEventListener('click', animate.bind(document.getElementById('demo')));
以上が「animate」関数が IE では動作するのに Chrome では動作しないのはなぜですか: JavaScript シャドウイングの問題ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。