variable valor solucionar quitar problema error entre diferencia como javascript typeerror

javascript - solucionar - Unkeught TypeError: no se puede leer la propiedad ''valor'' de undefined



undefined javascript error (5)

Tengo un código de JavaScript que da este error

Uncaught TypeError: Cannot read property ''value'' of undefined

Código:

var i1 = document.getElementById(''i1''); var i2 = document.getElementById(''i2''); var __i = {''user'' : document.getElementsByName("username")[0], ''pass'' : document.getElementsByName("password")[0] }; if( __i.user.value.length >= 1 ) { i1.value = ''''; } else { i1.value = ''Acc''; } if( __i.pass.value.length >= 1 ) { i2.value = ''''; } else { i2.value = ''Pwd''; }

¿Qué significa este error?


En primer lugar, debe asegurarse de que document.getElementsByName ("username") [0] realmente devuelva un objeto y no "undefined". Simplemente puede verificar como

if (typeof document.getElementsByName("username")[0] != ''undefined'')

Del mismo modo para la contraseña del otro elemento.


Las publicaciones aquí me ayudan mucho en mi camino para encontrar una solución para el TypeError no detectado: no se puede leer el ''valor'' de propiedad de un problema indefinido .

Ya hay muchas respuestas que son correctas, pero lo que no tenemos aquí es la combinación de 2 respuestas que creo que resuelven este problema por completo.

function myFunction(field, data){ if (typeof document.getElementsByName("+field+")[0] != ''undefined''){ document.getElementsByName("+field+")[0].value=data; } }

La diferencia es que realiza un control (si una propiedad está definida o no) y si la verificación es verdadera, entonces puede intentar asignarle un valor.


Parece uno de sus valores, con una clave de propiedad de ''valor'' no definida. Pruebe que i1 , i2 y __i están definidos antes de ejecutar las sentencias if:

var i1 = document.getElementById(''i1''); var i2 = document.getElementById(''i2''); var __i = {''user'' : document.getElementsByName("username")[0], ''pass'' : document.getElementsByName("password")[0] }; if(i1 && i2 && __i.user && __i.pass) { if( __i.user.value.length >= 1 ) { i1.value = ''''; } else { i1.value = ''Acc''; } if( __i.pass.value.length >= 1 ) { i2.value = ''''; } else { i2.value = ''Pwd''; } }


Prueba esto, siempre funciona, y obtendrás NO TypeError:

try{ var i1 = document.getElementById(''i1''); var i2 = document.getElementById(''i2''); var __i = {''user'' : document.getElementsByName("username")[0], ''pass'' : document.getElementsByName("password")[0] }; if( __i.user.value.length >= 1 ) { i1.value = ''''; } else { i1.value = ''Acc''; } if( __i.pass.value.length >= 1 ) { i2.value = ''''; } else { i2.value = ''Pwd''; } }catch(e){ if(e){ // If fails, Do something else } }


Ya sea document.getElementById(''i1'') , document.getElementById(''i2'') o document.getElementsByName("username")[0] no devuelve ningún elemento. Verifique que todos los elementos existan.