开发者问题收集

未捕获的类型错误:无法读取未定义的属性“值”

2011-07-01
722931

我的一些 JavaScript 代码出现了此错误:

Uncaught TypeError: Cannot read property 'value' of undefined

这是我的代码:

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'; }

这个错误是什么意思?

3个回答

似乎您的某个值(其属性键为“value”)未定义。在执行 if 语句之前,测试 i1i2__i 是否已定义:

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'; }
}
OsQu
2011-07-01

document.getElementById('i1')document.getElementById('i2')document.getElementsByName("username")[0] 均未返回任何元素。请检查所有元素是否存在。

nfechner
2011-07-01

尝试一下,它总是有效的,并且您将不会得到任何 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
    }
}
Joe L.
2014-05-09