2014-03-30 31 views
0

第一次發佈如此裸露與我。 我正在爲Firefox做一個擴展。我之前從未做過擴展,並且我對JS/JSON/XML的知識非常有限,但幸運的是Google有幫助。 此代碼將在JSON對象打印每一個「SNAME」元素:JavaScript - appendChild()在使用替換之後將不起作用

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

我試圖用下劃線替換任何空格的名稱。

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

後的 「VAR命名選項=」 行使其停止打印所有的名字 和

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

有同樣的負面影響。 任何有關如何解決這個問題的幫助將不勝感激。

回答

0

這應該工作,只要sName是一個字符串:

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

更新:

replace方法僅適用於strings定義,而不是一般的objects。調用未定義的方法會引發異常。 如果在某個時候沒有捕獲到異常,則停止執行。 這裏就是這種情況。

我不知道函數createListItem的細節,但我想它需要一個字符串作爲參數並返回一個對象,可能是超類型Element,因爲它被附加到DOM(請注意,您不能追加字符串直接!)。 由於元素沒有方法replace,因此代碼嘗試致電replace時停止執行。

+0

這工作!出於好奇,你知道爲什麼以前不工作嗎? – user2308961

+0

@ user2308961我在回答中添加了一些細節,希望有所幫助。 –