Javascript document.getElementById ("id"). value gibt null anstatt einer leeren Zeichenkette zurück, wenn das Element ein leeres Textfeld ist

8

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

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

abrufen möchte     
Guruprasad 27.06.2011, 10:26
quelle

8 Antworten

7

Die Veröffentlichung Ihres HTML könnte ein wenig helfen. 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 direkt nach dem Wert zu fragen, ohne zu wissen, ob das Element im HTML sichtbar ist oder nicht.

%Vor%     
ilight 27.06.2011, 10:35
quelle
4

fyi, das kann passieren, wenn Sie das Attribut html type="number" für Ihr Eingabe-Tag verwenden. Wenn Sie eine Nicht-Nummer eingeben, wird sie gelöscht, bevor Ihr Skript weiß, was vor sich geht.

    
Ivan Work 21.08.2014 18:49
quelle
1

Bitte überprüfe diese Geige und lass es mich wissen, wenn du eine Warnung von Nullwert erhältst. Ich habe Ihren Code dort kopiert und ein paar Warnungen hinzugefügt. Genau wie andere sehe ich auch keine Null zurück, ich bekomme eine leere Zeichenfolge. Welchen Browser benutzen Sie?

    
Aziz Shaikh 27.06.2011 11:00
quelle
1

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

%Vor%

und Ändern der console.log in alert , bekomme ich immer noch die gewünschte Ausgabe in IE6.

    
andyb 27.06.2011 11:11
quelle
1
%Vor%     
Rahul 27.11.2012 07:10
quelle
1

Für Ihren Code

%Vor%

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

Dies wird verursacht, indem document.write das Dokument ändert.

    
user4989959 09.06.2015 10:27
quelle
0

Sie haben anscheinend das Wertattribut in HTML-Markup weggelassen.

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

    
Pavel Koryagin 27.06.2011 10:31
quelle
0

Ich denke, die Textbox, auf die Sie zugreifen möchten, ist zum Zeitpunkt der JavaScript-Ausführung noch nicht auf der Seite geladen.

ie. Damit das Javascript das Textfeld aus dem DOM der Seite lesen kann, muss das Textfeld als Element verfügbar sein. Wenn das JavaScript aufgerufen wird, bevor das Textfeld auf die Seite geschrieben wird, wird das Textfeld nicht angezeigt und daher wird NULL zurückgegeben.

    
ilight 15.12.2011 19:09
quelle

Tags und Links