JS TypeError:无法读取属性' style'为null

时间:2014-04-04 20:17:26

标签: javascript

我有这个代码给了我一个" typerror"当它被称为......有人可以告诉我一个什么是错的,我似乎无法理解它有什么问题......

document.getElementById('cblberrormsg'+curID).style.display = "block";
var res = ''+ response;
document.getElementById('cblberrormsg'+curID).innerHTML = res;

谢谢。

2 个答案:

答案 0 :(得分:0)

document.getElementById('cblberrormsg'+curID)正在返回null。这意味着具有该id的对象不存在。

最常见的原因是因为您尝试在解析和加载页面部分之前过早地执行此行代码。您的代码必须位于相关HTML之后的<script>标记中,或者必须使用等待执行脚本的函数,直到页面加载为止。

但是,因为在这种情况下,您正在使用变量构建id字符串,所以curID可能不是您认为的或超出页面中可接受的值。

一旦你确定这个代码在页面HTML加载之后才被执行,那么我建议你像this那样使用它:

console.log("curID=" + curID);
console.log("document.getElementById('cblberrormsg'+curID)=" + document.getElementById('cblberrormsg'+curID);
document.getElementById('cblberrormsg'+curID).style.display = "block";
var res = ''+ response;
document.getElementById('cblberrormsg'+curID).innerHTML = res;

然后,在发生错误时查看调试日志,并在发生错误时查看curID的值。

答案 1 :(得分:0)

jfriend00是对的,你指的对象不存在。

如果文档尚未加载或由于某种原因你没有正确设置curID,那么你每次获得的代码都将会繁荣。

您可以通过更改代码进行测试:

var foo = document.getElementById('cblberrormsg'+curID);
if(foo){
    foo.style.display = "block";

    // foo exists 
    // do whatever, yadayadayada
}