2013-03-26 92 views
0

我想用箭頭1替換方形圖標(html文件中span文本中的文本:■):►。當菜單項前面的這個圖標與它的頁面ID相匹配時,就會發生這種情況,所以訪問者知道他在該菜單項所指示的頁面上。替換span元素的文本

我已經經歷了許多問題,但堅持這一個。

var newIcon = "►"; // arrow icon 
for (var j = 0; j < rightMenuIDs.length; j++){ 
    var thisID = rightMenuIDs[j]; 
    var thisSpanIcon = rightMenu[j].children[0].children[0].childNodes[0].nodeValue; 
    if(thisID === bodyIDsliced){ 
     thisSpanIcon = newIcon; 
    } 
} 

我用console.log檢查過,它說thisSpanIcon已更新爲箭頭圖標。但頁面上沒有任何改變。 我試過replace()和其他方法無濟於事。

如果有更好/正確的方法來做到這一點,有人可以躺在我身上嗎?

謝謝!

+0

我們需要知道這些變量代表什麼。 – Jivings 2013-03-26 21:54:09

+0

變量正在更改,但頁面上的內容不是。這應該工作:'rightMenu [j] .children [0] .children [0] .childNodes [0] .nodeValue = newIcon;'或者你可以設置thisSpanIcon = rightMenu [j] .children [0] .children [0 ] .childNodes [0]'然後'thisSpanIcon.nodeValue = newIcon' – 2013-03-26 21:55:54

+0

@Jivings不,這很明顯... – Alnitak 2013-03-26 22:11:11

回答

1

當你說:

thisSpanIcon = newIcon; 

你只是覆蓋局部變量thisSpanIcon其中包含節點的現有nodeValue財產的副本,不改變性質(並由此節點)本身。

嘗試:

var thisSpanNode = rightMenu[j].children[0].children[0].childNodes[0]; 
if (thisID === bodyIDsliced) { 
    thisSpanNode.nodeValue = newIcon; 
} 

應該改變節點的實際屬性。

另請注意,您應該使用Unicode格式的字符串而不是HTML實體,即\u25ba

+0

這是一些啓示。我想這是我需要花一些時間研究它的一些細微差別。 – cybercow69 2013-03-27 21:36:49

+0

如果我可以稍微繼續這個話題:►並不能很好地作爲一個穩固的右箭頭出現。這只是我如何把實體或我必須使用「圖標字體」來解決這個問題? – cybercow69 2013-03-27 21:39:00

+0

不知道,它取決於你有什麼系統。嘗試查看http://www.fileformat.info/info/unicode/char/25ba/fontsupport.htm – Alnitak 2013-03-27 21:39:24

-1

您必須使用elem.innerHTMLelem.innerText來更新元素/節點的文本。 (little example

此外,搜索一些現代的選擇元素的方式。

+0

'node.nodeValue'是完全合法的。 – Alnitak 2013-03-26 22:01:40

+0

感謝您選擇建議@Wouter J我剛開始練習JavaScript。所以我認爲最好從一些老派的方式開始,以確保我獲得正確的基礎。 – cybercow69 2013-03-27 21:41:09

+1

@ cybercow69好計劃 - 正確理解例如jQuery,首先理解本地DOM遍歷好得多。 – Alnitak 2013-03-27 21:44:08