2011-06-27 22 views
8

Tengo un elemento de cuadro de texto cuyo valor estoy intentando acceder usando document.getElementById("id-name").value. Encuentro que la llamada devuelve un valor nulo en lugar de cadena vacía. El tipo de datos del valor devuelto sigue siendo una cadena. ¿Es nulo un valor de cadena?Javascript document.getElementById ("id"). Value devuelve nulo en lugar de cadena vacía cuando el elemento es un cuadro de texto vacío

<input type="text" value="" id="mytext"> es el cuadro de texto cuyo valor Estoy tratando a buscar usando var mytextvalue = document.getElementById("mytext").value;

+2

¿Puedes publicar tu html? – BonyT

+0

@BonyT, '' es el cuadro de texto cuyo valor estoy tratando de obtener usando 'var mytextvalue = document.getElementById (" mytext "). Value;' – Guruprasad

+0

http://jsfiddle.net/UVdVe/ ??? No veo el problema! – BonyT

Respuesta

7

Publicar tu HTML podría ayudar un poco. En su lugar, puede obtener el elemento primero y luego verificar si es nulo o no y luego preguntar por su valor en lugar de solo solicitar el valor directamente sin saber si el elemento es visible en el HTML o no.

element1 = document.getElementById(id); 

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

El elemento cuyo valor estoy intentando acceder es '' usando 'document.getElementById ("mytext"). value' que devuelve un valor nulo en lugar de "". El elemento, dado que es un cuadro de texto, es muy visible. – Guruprasad

0

Parece que usted ha omitido el atributo de valor en el formato HTML.

Agréguelo allí como <input value="" ... >.

+0

incluso con 'value =" "' null es el valor devuelto en lugar de "" – Guruprasad

+0

¿Navegador? Acabo de registrarme en la última versión de Opera, Chrome, FF4, IE8 y obtuve "". –

1

Selecciona esta fiddle y quiero saber si recibe una alerta de valor nulo. Copié tu código allí y agregué un par de alertas. Al igual que otros, tampoco veo que se devuelva un valor nulo, obtengo una cadena vacía. ¿Qué navegador estás usando?

1

This demo está volviendo correcta para mí en Chrome 14, FF3 y FF5 (con Firebug):

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

y cambiando la console.log-alert, sigo teniendo la salida deseada en IE6.

0

Creo que el cuadro de texto al que intenta acceder todavía no se ha cargado en la página en el momento en que se ejecuta su javascript.

ie., Para que el Javascript pueda leer el cuadro de texto desde el DOM de la página, el cuadro de texto debe estar disponible como un elemento. Si se llama al javascript antes de que se escriba el cuadro de texto en la página, el cuadro de texto no estará visible y se devuelve NULL.

1
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" /> 
4

fyi, esto puede suceder si está utilizando el atributo html type = "number" en su etiqueta de entrada. Ingresar un número no se borrará antes de que su secuencia de comandos sepa lo que está sucediendo.

1

Para su código

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

mytextvalue contendrá null si tiene una declaración document.write() antes de este código. Por lo tanto, elimine la instrucción document.write y debería obtener un objeto de texto adecuado en la variable mytextvalue.

Esto es causado por document.write cambiando el documento.

Cuestiones relacionadas