Heim >Web-Frontend >CSS-Tutorial >Warum funktioniert meine „Animate'-Funktion im IE, aber nicht in Chrome: Ein JavaScript-Shadowing-Problem?
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>Gemäß den DOM-Spezifikationen beschattet die globale Event-Handler-Umgebung den Gültigkeitsbereich des Elements während der Event-Handhabung. Somit hat die „Animieren“-Methode des Elements Vorrang vor der globalen „Animieren“-Funktion.
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>Um dies zu beheben, kann man mehrere Ansätze anwenden:
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')));
Das obige ist der detaillierte Inhalt vonWarum funktioniert meine „Animate'-Funktion im IE, aber nicht in Chrome: Ein JavaScript-Shadowing-Problem?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!