使用replace后,appendChild()将无法工作

时间:2014-03-30 03:33:44

标签: javascript firefox firefox-addon

我正在为firefox做扩展。我之前从未进行过扩展,而且我对JS / JSON / XML的了解非常有限,但幸运的是有Google可以提供帮助。 此代码将打印JSON对象中的每个“sName”元素:

for(var i=0; i<obj.names.length; i++)
{
    var nameItem = createListItem(obj.names[i].sName);
    lb.appendChild(nameItem);
}

我正在尝试用下划线替换名称中的任何空格。

    nameItem = nameItem.replace(/ /g,"_");

在“var nameItem =”行之后,它停止打印所有名称 和

    var nameItem = createListItem(obj.names[i].sName).replace(/ /g, "_");

也有同样的负面影响。

1 个答案:

答案 0 :(得分:2)

如果sName是字符串:

,这应该有效
var nameItem = createListItem(obj.names[i].sName.replace(/ /g, "_"));

<强>更新

replace方法仅针对strings定义,而不是针对objects定义。 调用未定义的方法会引发异常。 如果在某个时刻未捕获到异常,则执行停止。 这就是这种情况。

我不知道函数createListItem的详细信息,但我想它会将一个字符串作为参数并返回一个对象,可能是超类型Element,因为它是被附加到DOM(请注意,您不能直接追加字符串!)。 由于Elements没有方法replace,因此执行会在代码尝试调用replace的位置停止。