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;
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.
}
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.
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.
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" />
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?
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.
Il semble que vous ayez omis l'attribut value dans le balisage HTML.
Ajoutez-le là en tant que <input value="" ... >
.
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é.