未捕获的TypeError:无法读取未定义的属性“0”

时间:2012-12-15 02:14:37

标签: javascript

这里我有一个div box-title,我有span相关产品,我想将其文本更改为'Choose Extra To make It More Special'为什么会出现此错误,请任何人都可以告诉我。

function onloadCall()
{   
    var divs = document.getElementsByClassName('box-title');
    for(var i = 0; i < divs.length; i++)
    {
        var div = divs[i];
        if(!div) break
        var span = div.getElementsByTagName('span')[0];
        if(span[0].innerHTML == 'Related Products') 
            span[0].innerHTML='Choose Extra To make It More Special';
    }
}
window.addEventListener('load', onloadCall, false);

实际上,我的HTML标记是这样的:

<div class="box-title"><strong><span>Related Products<span></strong></div>

3 个答案:

答案 0 :(得分:1)

变化:

if(span[0].innerHTML == 'Related Products') 
    span[0].innerHTML='Choose Extra To make It More Special';

有:

if(span.innerHTML == 'Related Products') 
    span.innerHTML='Choose Extra To make It More Special';

它应该有用。

此外,您可以更改以下内容:

var span = div.getElementsByTagName('span')[0];

有关:

var span = div.getElementsByTagName('span');

保持其他代码不变。如果这两个都不起作用,那么请确保html文件中有任何span标记。

答案 1 :(得分:0)

var span = div.getElementsByTagName('span')[0];
if(span[0].innerHTML == 'Related Products') 
    span[0].innerHTML='Choose Extra To make It More Special';

我看到你抓住数组的第一个索引,然后在它不是一个数组的时候尝试抓住第一个索引。

<强>尝试:

var span = div.getElementsByTagName('span')[0];
if(span.innerHTML == 'Related Products') 
    span.innerHTML='Choose Extra To make It More Special';

答案 2 :(得分:0)

if(!div) {
    break;
}
var span = div.getElementsByTagName('span')[0];
if(span && span.innerHTML == 'Related Products') {
    span.innerHTML = 'Choose Extra To make It More Special';
}

demo