Heim >Web-Frontend >js-Tutorial >Warum funktioniert „onclick='clear()'` nicht in JavaScript?

Warum funktioniert „onclick='clear()'` nicht in JavaScript?

Linda Hamilton
Linda HamiltonOriginal
2024-12-24 21:12:121005Durchsuche

Why Doesn't `onclick=

onclick="clear()" funktioniert nicht: Das JavaScript-Hindernis verstehen

Beim Versuch, einen einfachen Rechner zu erstellen, stößt man auf ein rätselhaftes Problem: das „clear“. Die Schaltfläche „, der das Attribut onclick="clear()" zugewiesen ist, führt ihre beabsichtigte Funktion zum Löschen des Textfelds nicht aus.

Das Rätsel liegt in den intrinsischen Ereignisattributen von JavaScript, wie z. B. onclick. Diese Attribute verwenden die with-Anweisung, eine Vorgehensweise, von der aufgrund der Gefahr von Verwirrung und Kompatibilitätsbedenken abgeraten wird. Folglich ruft das Attribut onclick="clear()" versehentlich document.clear() auf und nicht die vorgesehene globale Funktion clear().

Um dieses Problem zu beheben, kann man die Funktion „clear“ umbenennen oder explizit „window“ aufrufen. klar(). Eine bessere Lösung besteht jedoch darin, addEventListener für die Ereignisbindung zu verwenden, wodurch die Verwendung intrinsischer Ereignisattribute umgangen wird.

Das folgende Codebeispiel demonstriert die ordnungsgemäße Implementierung mit addEventListener:

<script>
  const clearButton = document.querySelector('input[value="C"]');
  clearButton.addEventListener('click', clear);

  function clear() {
    document.getElementById("field").value = "";
  }
</script>

Das obige ist der detaillierte Inhalt vonWarum funktioniert „onclick='clear()'` nicht in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn