如何删除特定元素中的特定字符

问题描述:

如何删除字符“,”从一个div。例如,如何删除特定元素中的特定字符

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

现在我想要使用javascript从该div中删除所有“,”s。

请原谅我在JavaScript中太noob。

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

如果元素只有包含文本并没有其他的元素,你可以简单地做取得元素的内部内容然后执行字符串替换:

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://*.com/questions/6970509/get-element-by-class-instead-of-id – 2012-04-15 12:36:42