【发布时间】:2012-04-15 12:18:11
【问题描述】:
如何从 div 中删除字符“,”。例如,
<div class="something">This, is, the, text. </div>
现在我想使用 javascript 从该 div 中删除所有“,”。
请原谅我对javascript太菜鸟。
【问题讨论】:
标签: javascript
如何从 div 中删除字符“,”。例如,
<div class="something">This, is, the, text. </div>
现在我想使用 javascript 从该 div 中删除所有“,”。
请原谅我对javascript太菜鸟。
【问题讨论】:
标签: javascript
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/
【讨论】:
getElementsByClassName 在 9 之前在 IE 中不起作用。看看我在其他 cmets 中链接到的问题。它返回一个节点列表,例如childNodes: developer.mozilla.org/en/DOM/document.getElementsByClassName 您可以使用for 循环对其进行迭代。
elements[i] 访问“当前”元素,因为i 是您的循环变量。
如果元素仅包含文本而没有其他元素,你可以简单地获取元素的内部内容然后执行字符串替换:
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。
如果你也想替换子元素内的文本,你必须为每个元素节点递归调用这个函数(nodeType是1)。
参考:String.replace、Node.childNodes、Node.nodeType、Node.nodeValue、RegExp
【讨论】: