未捕获的TypeError:无法读取属性< innerHTML'未定义的。为什么?

时间:2016-06-06 08:07:38

标签: javascript html innerhtml uncaught-typeerror

我有这个简单的函数从现有表中检索一个值。每次我的应用程序运行此函数时,都会出现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);
}

1 个答案:

答案 0 :(得分:0)

将调试器放在while语句中。然后使用 f12 打开控制台。之后使用 f10 ,您可以一步一步完成代码。对象cd中的某个位置rows[i].cells[0]元素未定义。这就是为什么你会收到这个错误。