web-dev-qa-db-fra.com

Javascript document.getElementById ("id"). Valeur renvoyant la valeur null au lieu d'une chaîne vide lorsque l'élément est une zone de texte vide

J'ai un élément de zone de texte dont j'essaie d'accéder à la valeur à l'aide de document.getElementById("id-name").value. Je trouve que l'appel renvoie une valeur null au lieu d'une chaîne vide. Le type de données de la valeur renvoyée est toujours une chaîne. Est-ce que null est une valeur de chaîne?

<input type="text" value="" id="mytext"> est la zone de texte dont j'essaie de récupérer la valeur à l'aide de var mytextvalue = document.getElementById("mytext").value;

8
Guruprasad

Publier votre code HTML pourrait aider un peu. Au lieu de cela, vous pouvez d'abord obtenir l'élément, puis vérifier s'il est null ou non, puis demander sa valeur plutôt que demander directement la valeur sans savoir si l'élément est visible sur le code HTML ou non.

element1 = document.getElementById(id);

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

fyi, cela peut arriver si vous utilisez l’attribut html type = "number" sur votre balise d’entrée. Si vous saisissez un non-numéro, cela sera effacé avant que votre script ne sache ce qui se passe.

4
Ivan Work

Cette démo revient correctement pour moi sous Chrome 14, FF3 et FF5 (avec Firebug):

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

et en changeant le console.log en alert, j'obtiens toujours le résultat souhaité dans 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

Veuillez vérifier ceci fiddle et laissez-moi savoir si vous recevez une alerte de valeur nulle. J'ai copié votre code ici et ajouté quelques alertes. Tout comme les autres, je ne vois pas non plus de null retourné, je reçois une chaîne vide. Quel navigateur utilisez-vous?

1
Aziz Shaikh

Pour votre code

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

mytextvalue contiendra null si vous avez une instruction document.write() avant ce code. Donc, supprimez l'instruction document.write et vous devriez obtenir un objet texte approprié dans la variable mytextvalue.

Ceci est causé par document.write qui modifie le document.

1
user4989959

Il semble que vous ayez omis l'attribut value dans le balisage HTML.

Ajoutez-le là en tant que <input value="" ... >.

0
Pavel Koryagin

Je pense que la zone de texte à laquelle vous essayez d'accéder n'est pas encore chargée sur la page au moment de l'exécution de votre javascript.

en d'autres termes, pour que le Javascript puisse lire la zone de texte à partir du DOM de la page, il doit être disponible en tant qu'élément. Si le javascript est appelé avant que la zone de texte ne soit écrite sur la page, celle-ci ne sera pas visible et NULL sera renvoyé.

0
ilight