我有这个简单的函数从现有表中检索一个值。每次我的应用程序运行此函数时,都会出现Uncaught TypeError: Cannot read property 'innerHTML' of undefined
错误。功能是:
function getDataCapData(proc, index){
var cd=document.getElementById("capacityD");
var i=2;
while(i<cd.rows.length){
if(proc.localeCompare(cd.rows[i].cells[0].innerHTML)==0) return 1*cd.rows[i].cells[index].innerHTML;
i++;
}
return 0;
}
我错了什么?可能这个错误与我的应用程序有关(我的意思是,我已经在同一个应用程序中遇到过这个奇怪的问题,并通过之前的&#34; undefined&#34;值的分配来解决它?)
编辑:经过一些测试,我发现问题在于返回值。事实上,如果我设置return 1;
,我就不会收到错误。那么,这怎么可能呢?该表存在,当执行localeCompare()
函数时,值成功读取,为什么我不能读取另一个值并返回它?
第二次编辑:如果我在console.log中输入值,而不是返回它,控制台会正确显示它。怎么可能呢?
第三次编辑:不要问我怎么做,但我设法解决了这个问题。我的新代码是:function getDataCapData(proc, index){
var cd=document.getElementById("capacityD");
var i=2;
while(i<cd.rows.length && proc.localeCompare(cd.rows[i].cells[0].innerHTML)!=0) i++;
return( 1*cd.rows[i].cells[index].innerHTML);
}
答案 0 :(得分:0)
将调试器放在while语句中。然后使用 f12 打开控制台。之后使用 f10 ,您可以一步一步完成代码。对象cd
中的某个位置rows[i].cells[0]
元素未定义。这就是为什么你会收到这个错误。