1

在这里,我有带类的 divbox-titlespan带相关产品的 div,我想将其文本更改为 '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>
4

3 回答 3

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');

并保持其他代码不变。如果这些都不起作用,请确保span您的 html 文件中有任何标签。

于 2012-12-15T02:18:01.713 回答
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';
于 2012-12-15T02:19:10.263 回答
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';
}

演示

于 2012-12-15T02:23:56.850 回答