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

时间:2012-04-15 12:18:12

标签: javascript

如何从div中删除字符“,”。例如,

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

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

请原谅我在javascript中过于通奸。

2 个答案:

答案 0 :(得分:4)

如果元素包含文本而没有其他元素,您只需获取元素的内部内容然后执行字符串替换:

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

要替换所有出现的字符序列,您必须使用带有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

答案 1 :(得分:4)

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/