2017-01-02 4 views
-1

Ich habe ein Eingabefeld und ich möchte eine bestimmte Warnung nach dem Text, den Sie eingeben. Ich bekomme immer den Fehler "TypeError: input.match (...) ist null", wenn ich etwas außer "Hallo" eintippen.Warum bekomme ich "TypeError: input.match (...) ist null"?

Mein Code:

<html> 
<body> 
<form name="form5"> 
    <input type=text size=51 name="input"> 
    <input onClick=auswert() type=button value="submit"> 
</form> 
<script type="text/javascript"> 

function auswert() { 
var input = document.form5.input.value; 

if (input.match(/hello/g).length == 1) alert("hello"); 
else alert("bye"); 
} 

</script> 
</body> 
</html> 
+1

Da 'input.match (/ hallo/g)' 'kehrt null', wenn es keine Übereinstimmung gibt. Das Lesen der [Dokumentation] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match) ist immer nützlich. – Teemu

+0

oder machen Sie eine bessere Logik, wenn Sie die Dokumentation nicht lesen möchten. 'if ((input.match (/ hallo/g)) && (input.match (/ hallo/g) .length == 1))' –

Antwort

0

Von Mozilla Developer Network Dokumentation für String.prototype.match():

"Ein Array entsprach das gesamte Spiel Ergebnis und alle Klammern-Capturing mit Ergebnissen; null, wenn keine Spiele waren."

input.match(/hello/g) gibt null zurück. Dann rufen Sie length auf null. null hat keine Funktionen, die Sie darauf aufrufen können.

Ich würde vorschlagen, Sie versuchen:

if (input.match(/hello/g) == null) { 
    // No Matches 
    alert("bye"); 
} else { 
    // Matches 
    alert("hello"); 
} 
Verwandte Themen