Javascript搜索dom中出现的所有字符?

Javascript搜索dom中出现的所有字符?,javascript,Javascript,我想查找dom中出现的所有$字符,这是如何实现的?您不能在span元素中执行类似于包装$4.00这样的语义操作吗 <span class="money">$4.00</span> 4.00美元 然后,您将找到属于“money”类的元素,并非常容易地对它们进行操作。你可以更进一步 <span class="money">$<span class="number">4.00</span></span> 4.00美元 我不

我想查找dom中出现的所有$字符,这是如何实现的?

您不能在span元素中执行类似于包装$4.00这样的语义操作吗

<span class="money">$4.00</span>
4.00美元
然后,您将找到属于“money”类的元素,并非常容易地对它们进行操作。你可以更进一步

<span class="money">$<span class="number">4.00</span></span>
4.00美元

我不喜欢成为jQuery插件。。。但是如果你这么做了,jQuery可能是一条出路。

我想为原型增加2美分。Prototype有一些非常简单的DOM遍历函数,这些函数可能正是您想要的

编辑,所以这里有一个更好的答案

decentants()
函数收集所有子项及其子项,并允许在使用
each()
函数时对它们进行枚举

$('body').descendants().each(function(item){
   if(item.innerHTML.match(/\$/))
   {
      // Do Fun scripts
   }
});
或者如果您想从
文档开始

 Element.descendants(document).each(function(item){
   if(item.innerHTML.match(/\$/))
   {
      // Do Fun scripts
   }
});

实现这一点的一种方法(虽然可能不是最好的方法)是遍历DOM以查找所有文本节点。这样的事情可能就足够了:

var elements = document.getElementsByTagName("*");
var i, j, nodes;
for (i = 0; i < elements.length; i++) {
    nodes = elements[i].childNodes;
    for (j = 0; j < nodes.length; j++) {
        if (nodes[j].nodeType !== 3) { // Node.TEXT_NODE
            continue;
        }
        // regexp search or similar here
    }
}
var elements=document.getElementsByTagName(“*”);
变量i,j,节点;
对于(i=0;i

尽管如此,这仅在
$
字符始终与其后面的数量位于同一文本节点时才有效。

您可以在body标记的innerHTML上使用正则表达式搜索:

例如,在本页上:

var body = document.getElementsByTagName('body')[0];
var dollars = body.innerHTML.match(/\$[0-9]+\.?[0-9]*/g)
结果(发布时):


如果您只需要一组字符串,而不需要引用包含
$
的节点,那么最简单的方法就是在正文的文本内容上使用正则表达式。请注意,
innerText
textContent
并不完全相同。这里可能影响事情的主要区别是
textContent
包含
元素的内容,而
innerText
不包含这些内容。如果这很重要,我建议改为遍历DOM

var b = document.body, bodyText = b.textContent || b.innerText || "";
var matches = bodyText.match(/\$[\d.]*/g);

一旦你找到他们,你想做什么?在其周围添加元素并高亮显示?需要获取参考点,以便我可以获取符号旁边的数值例如包含$4.00的文档,我需要提取4.00字符串部分。这里没有解决JL问题的方法。。。只是一个原型的插头。更具体地解释如何使用原型来解决这个问题!一、 首先,我没有使用过它,我会很感激你的知识。我已经更新了我的答案来解释我模糊地指的是什么-谢谢你戳我的眼睛:-)即使没有JQuery,也可以轻松地在JS中完成:
var prices=getElementsByClassName(“number”)
确实是您所需要的一切。@nico-
GetElementsByCassName
在IE中不受支持。。。就我个人而言,我认为最好是先获取class
money
元素,然后再获取class
number
元素。尽管如此,这是正确的观点。该死的。。。我想他们至少把它放在IE8里了,但不,你是对的
var b = document.body, bodyText = b.textContent || b.innerText || "";
var matches = bodyText.match(/\$[\d.]*/g);