2017-07-29 3 views
2

Typeerror: name.addEventListener ist keine Funktion

<input id="name" type="number" placeholder="Name"> 
 

 
<script> 
 
    var name = document.getElementById("name"); 
 
    name.addEventListener('focus',function() { 
 
     alert("Type your name"); 
 
    }); 
 

 
</script>

ich versucht habe Cache zu löschen, den Browser geändert, half nichts. In jsfiddle funktioniert der Code super, aber in Browser Nr.

+0

vielleicht ist Ihr Js-Code vor Ihrem html ausgeführt – tinamou

+0

@Andreas aber es funktioniert? –

+0

@ ꜱᴜʀᴇꜱʜ ᴀᴛᴛᴀ eigentlich ja, mit anders als "name" name funktioniert es auch ohne window.onload –

Antwort

0

Ich habe den Variablennamen name in aname geändert und es hat funktioniert. Es wird generell empfohlen, keine Variablennamen zu verwenden, die mit JavaScript-Schlüsselwörtern oder vordefinierten Variablen kollidieren könnten. window.name ist so ein Fall

1

Das Problem ist, dass Ihr Skript vor dem HTML-Rendering fertig ausgeführt wird. Fügen Sie Ihren Code in den Onload-Callback ein, damit Ihr HTML geladen wird.

<input id="name" type="number" placeholder="Name"> 
 

 
<script> 
 
    window.onload = function(){ 
 
    var name = document.getElementById("name"); 
 
    name.addEventListener('blur',function() { 
 
     alert("Type your name"); 
 
    }); 
 
    } 
 
</script>

Hinweis: Der Fokus Ereignis Changed-Unschärfe mich von Warnungen aus der Serie zu speichern.

+0

@jack_snipe Das funktioniert, weil die Variable 'name' im Gültigkeitsbereich einer Funktion definiert ist und daher nicht mit' kollidiert window.name'. Bitte beachten Sie auch meine Antwort unten. –