1

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

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

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

请原谅我在 javascript 中太菜鸟。

4

2 回答 2

6
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/

于 2012-04-15T12:30:18.077 回答
4

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

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

要替换所有出现的字符序列,您必须使用带有global 修饰符的正则表达式。

如果元素包含其他元素,您可以遍历所有子文本节点:

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
        }
    }
}

需要注意的事项:

  • 如果您要搜索的文本包含特殊的正则表达式字符,您必须先正确转义它们

  • 如果您还想替换子元素内的文本,则必须为每个元素节点(nodeTypeis 1)递归调用此函数。

参考: String.replace , Node.childNodes, Node.nodeType, Node.nodeValue,RegExp

于 2012-04-15T12:25:25.327 回答