开发者问题收集

“未捕获的类型错误:无法读取空的 JAVASCRIPT 属性‘length’

2017-02-09
32292

我使用简单的长度函数根据 id 检查长度是否大于零。我使用的代码是

if ($('#abcd').length > 0)
{
    var abcd = $('#abcd').val();
}

此代码运行正常,不会产生任何错误。但如果我以这种方式使用简单的 javascript

if (document.getElementById('abcd').length > 0)
{
    var abcd = document.getElementById('abcd').val();
}

则它不起作用并产生此错误“未捕获的类型错误:无法读取 null 的属性‘长度’”。这个错误是什么意思,我该如何让它正常工作?

3个回答

如果元素不存在,则 getElementById 方法将返回 null ,而您尝试获取其 length 属性,这会引发异常。相反,只需在 if 条件中检查它是否已定义即可。

if (document.getElementById('abcd'))

使用变量,而不是获取元素两次。虽然 DOM 元素没有 val() 方法(jQuery 方法),但可以使用 value 属性来获取值。

var ele = document.getElementById('abcd');

if (ele){
    var abcd = ele.value;
}
Pranav C Balan
2017-02-09

这是因为 id ="abcd" 中不会有元素,

所以试试这个;

if (document.getElementById('abcd')){
 var abcd = document.getElementById('abcd').val();
}
Saurabh Agrawal
2017-02-09

尝试这样做。获取字段的值,然后使用长度进行比较。

if ($('#abcd').val().length > 0)
{
    var abcd = $('#abcd').val();
}
if ($('#abcd').val().length > 0)
{
    var abcd = $('#abcd').val();
    console.log(abcd);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="abcd"  value="hello">
Hikmat Sijapati
2017-02-09