web-dev-qa-db-de.com

Javascript document.getElementById ("id"). Der Wert gibt null anstelle einer leeren Zeichenfolge zurück, wenn das Element ein leeres Textfeld ist

Ich habe ein Textfeldelement, auf dessen Wert ich mit document.getElementById("id-name").value zugreifen möchte. Ich finde, dass der Aufruf eine leere Zeichenfolge zurückgibt. Der Datentyp des zurückgegebenen Wertes ist immer noch eine Zeichenfolge. Ist null ein Stringwert?

<input type="text" value="" id="mytext"> ist das Textfeld, dessen Wert ich mit var mytextvalue = document.getElementById("mytext").value; abrufen möchte.

8
Guruprasad

Das Veröffentlichen Ihres HTML-Codes kann ein wenig hilfreich sein. Stattdessen können Sie das Element zuerst abrufen und dann prüfen, ob es null ist oder nicht, und dann nach seinem Wert fragen, anstatt nur direkt nach dem Wert zu fragen, ohne zu wissen, ob das Element im HTML-Code sichtbar ist.

element1 = document.getElementById(id);

if(element1 != null)
{
    //code to set the value variable.
}
7
ilight

dies kann passieren, wenn Sie das html type = "number" -Attribut für Ihr Eingabe-Tag verwenden. Wenn Sie eine Nicht-Nummer eingeben, wird diese gelöscht, bevor Ihr Skript weiß, was los ist.

4
Ivan Work

Diese Demo wird in Chrome 14, FF3 und FF5 (mit Firebug) für mich korrekt zurückgegeben:

var mytextvalue = document.getElementById("mytext").value;
console.log(mytextvalue == ''); // true
console.log(mytextvalue == null); // false

wenn Sie console.log in alert ändern, erhalte ich immer noch die gewünschte Ausgabe in IE6.

1
andyb
try this...    
<script type="text/javascript">
    function test(){
    var av=document.getElementById("mytext").value;
    alert(av);
    }
    </script>

    <input type="text" value="" id="mytext">
    <input type="button" onclick="test()" value="go" />
1
Rahul

Bitte überprüfen Sie diese Geige und lassen Sie mich wissen, wenn Sie eine Warnung über den Nullwert erhalten. Ich habe Ihren Code dort kopiert und ein paar Warnungen hinzugefügt. Genau wie andere sehe ich auch keine Null, die zurückgegeben wird, ich bekomme eine leere Zeichenfolge. Welchen Browser benutzen Sie?

1
Aziz Shaikh

Für Ihren Code

var mytextvalue = document.getElementById("mytext");

mytextvalue enthält null, wenn Sie vor diesem Code eine document.write()-Anweisung haben. Entfernen Sie also die document.write-Anweisung und Sie sollten in der Variablen mytextvalue ein geeignetes Textobjekt erhalten.

Dies wird dadurch verursacht, dass document.write das Dokument ändert.

1
user4989959

Es scheint, dass Sie das value-Attribut in HTML-Markup nicht angegeben haben.

Fügen Sie es dort als <input value="" ... > hinzu.

0
Pavel Koryagin

Ich glaube, das Textfeld, auf das Sie zugreifen möchten, ist zum Zeitpunkt der Ausführung Ihres Javascript noch nicht auf die Seite geladen.

dh, damit Javascript die Textbox aus dem DOM der Seite lesen kann, muss die Textbox als Element verfügbar sein. Wenn das Javascript aufgerufen wird, bevor das Textfeld auf die Seite geschrieben wird, ist das Textfeld nicht sichtbar und NULL wird zurückgegeben.

0
ilight