【问题标题】:How to remove specific characters in a particular element如何删除特定元素中的特定字符
【发布时间】:2012-04-15 12:18:11
【问题描述】:

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

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

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

请原谅我对javascript太菜鸟。

【问题讨论】:

    标签: javascript


    【解决方案1】:
    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/

    【讨论】:

    • 请不要只发布链接。如果无法访问怎么办?始终包括代码的相关部分以及解释。
    • @jonathan 效果非常好。谢谢^^ 刚刚还有一个问题。如果我有多个同一个类的元素怎么办?我如何循环这段代码来处理该类的所有元素?
    • @t_virus:请注意,getElementsByClassName 在 9 之前在 IE 中不起作用。看看我在其他 cmets 中链接到的问题。它返回一个节点列表,例如childNodes: developer.mozilla.org/en/DOM/document.getElementsByClassName 您可以使用for 循环对其进行迭代。
    • @t_virus:您可以选择要迭代的元素迭代它们之前,即在循环之前。然后在循环中,您使用elements[i] 访问“当前”元素,因为i 是您的循环变量。
    • 我更新了我的答案,以展示如何使这项工作循环进行。 @t_virus 我认为您应该阅读并了解有关编程 101 的更多信息;-)
    【解决方案2】:

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

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

    注意事项:

    • 如果您要搜索的文本包含特殊的正则表达式字符,you have to properly escape them first

    • 如果你也想替换子元素内的文本,你必须为每个元素节点递归调用这个函数(nodeType1)。

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

    【讨论】:

    • 嗯,这对我来说很难理解,因为我对 javascript 很陌生,你能写一个代码来解决给定的类(某事)=)
    • 我包含了指向我使用的所有函数的文档的链接,请看一下。如果您的案例与您的示例一样简单,您可以使用第一个代码示例。如果您不知道如何通过类名获取元素,请查看以下问题:stackoverflow.com/questions/6970509/…
    猜你喜欢
    • 1970-01-01
    • 2015-05-29
    • 2022-01-12
    • 2015-01-08
    • 2012-02-07
    • 2014-03-05
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多