2012-04-15 113 views
0

如何刪除字符「,」從一個div。例如,如何刪除特定元素中的特定字符

<div class="something">This, is, the, text. </div> 

現在我想要使用javascript從該div中刪除所有「,」s。

請原諒我在JavaScript中太noob。

回答

3
var elements = document.getElementsByClassName("something"); 
elements[0].innerHTML = elements[0].innerHTML.replace(/,/g,''); 

檢查這個例子了: http://jsfiddle.net/QpJNZ/

更新:

var elements = document.getElementsByClassName("something"); 
for (var i = 0; i < elements.length; ++i) { 
    elements[i].innerHTML = elements[i].innerHTML.replace(/,/g,''); 
} 

這是如何使這個工作不止一個元素。

檢查這個例子了: http://jsfiddle.net/VBEaQ/2/

+1

請不要只發布鏈接。如果不可達,該怎麼辦?始終包含代碼的相關部分和解釋。 – 2012-04-15 12:31:44

+0

@jonathan它工作得很好。謝謝^^ 只是有一個問題。如果我有同一班級的多個元素會怎麼樣?我如何循環這段代碼來處理那個類的所有元素? – rzr 2012-04-15 12:39:48

+0

@t_virus:請注意,'getElementsByClassName'在9之前的IE中不起作用。請查看我在其他評論中提到的問題。它返回一個節點列表,如'childNodes':https://developer.mozilla.org/en/DOM/document.getElementsByClassName你可以使用'for'循環遍歷它。 – 2012-04-15 12:42:59

4

如果元素只有包含文本並沒有其他的元素,你可以簡單地做取得元素的內部內容然後執行字符串替換:

element.innerHTML = element.innerHTML.replace(/,/g, ''); 

要替換的字符序列的所有出現,你必須使用 lobal修飾符的正則表達式。

如果元素包含其他元素,你可以遍歷所有子文本節點:

function replace(element, needle, repl) { 
    var children = element.childNodes, // get a list of child nodes 
     pattern = new RegExp(needle, 'g'), // prepare pattern 
     child, i, l; 

    for(i = 0, l = children.length; i < l; i++) { 
     child = children[i]; 
     if(child.nodeType === 3) {  // if we deal with a text node 
      child.nodeValue = child.nodeValue.replace(pattern, repl); // replace 
     } 
    } 
} 

事情需要提防:

  • 如果您正在搜索的文本包含特殊規則表達字符,you have to properly escape them first

  • 如果要替換子元素中的文本,則必須遞歸地爲每個元素節點調用此函數(nodeType1)。

參考:String.replaceNode.childNodesNode.nodeTypeNode.nodeValueRegExp

+0

清楚,是我很難理解,因爲我非常新的JavaScript 你能不能只寫代碼,會做給定類(東西)的伎倆= ) – rzr 2012-04-15 12:31:53

+0

我收錄了我使用的所有功能文檔的鏈接,請看看它。如果你的情況和你的例子一樣簡單,你可以使用第一個代碼示例。如果您不知道如何通過類名獲取元素,請查看以下問題:http://stackoverflow.com/questions/6970509/get-element-by-class-instead-of-id – 2012-04-15 12:36:42