2011-06-06 88 views
0

我想如下改變錨文本:無法更改anchor.text

for (var i = 0; i < anchors.length; i++) { 
    ... 
    anchors[i].text = anchors[i].text + "+"; 
} 

我試過的替代方法,如concatappend但沒有任何工程。

anchors[i].innerHTML幫助,但代碼在DOMContentLoaded上調用,我只想添加「+」字符串,而不是它我添加了不可預知的序列「+」*例如「++++++++」

謝謝大家幫忙

+1

轉到jQuery的。它可以做到這一點和更多,它的工作原理X瀏覽器。 :) – 2011-06-06 18:31:42

+0

@ user42540 JQuery的優點是什麼?代碼更快嗎? – xralf 2011-06-06 18:38:52

+0

[JQUERY真的很棒,做的都是](http://www.doxdesk.com/img/updates/20091116-so-large.gif) – naveen 2011-06-06 18:48:10

回答

3

簡而言之,HTMLElement.innerHTML是HTML字符串。在你的情況下,你正在尋找Node.textContent和非標準Node.innerText,因爲你只是替換文本。

var anchors = document.links; 

for(var i=0;i<anchors.length;i++) 
{ 
    var anchor = anchors[i]; 
    if(anchor.textContent) 
    { 
     //W3C DOM 
     anchor.textContent += "+"; 
    }else if(anchor.innerText) 
    { 
     //Microsoft DOM 
     anchor.innerText += "+"; 
    } 
} 

當舊的瀏覽器打交道時,你可以像使用這裏提供的一個bobince片段(請注意,它會清除的childNodes乾淨,並用文本節點替換它們): 'innerText' works in IE, but not in Firefox

參考:

  1. MDC: https://developer.mozilla.org/En/DOM/Node.textContent
  2. MSDN: http://msdn.microsoft.com/en-us/library/ms533899%28v=VS.85%29.aspx
  3. W3C DOM Level 3的:http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#Node3-textContent
+0

多個「+」的問題仍然存在。 – xralf 2011-06-06 19:39:18

+2

然後你的問題是一個事件監聽器(可能冒泡)。在代碼執行後嘗試刪除事件偵聽器。 – 2011-06-06 19:45:16

+0

我測試過它,它只是增加了一個'+'。你是否多次運行代碼,或者這些鏈接已經以'+'結尾,或者你的'anchors'數組中包含對每個鏈接的多個引用?在任何這些情況下,您必須添加條件語句才能確保字符串在添加之前不以'+'結尾。 – 2011-06-06 19:55:46

1

JavaScript的DOM不具備的.text。它有.innerHTML

1

如果你指的是鏈接文本:

var anchors = document.getElementsByTagName("A"); 
for (var i = 0; i < anchors.length; i++) { 
    anchors[i].innerHTML += "+"; 
} 
+0

A還是?我有點困惑:) – naveen 2011-06-06 18:48:50