如何抓取页面上的某些文字?

时间:2012-05-12 03:36:22

标签: javascript jquery dom

这会抓取td标签等

<script type=”text/javascript”>

var td = document.getElementsByTagName(“td”);
for (var i = 0; i < td.length; i++) {
    document.write(‘td #’ + i + ‘<br />’);
}

</script>

如何使其等效于获取某些文字

例如,如果我有

hello world
by world
hello goodbye
yellow submarine
yo hello

如何在所有文本中抓取“你好”

4 个答案:

答案 0 :(得分:3)

使用jQuery的contains selector可以帮到你。

http://jsfiddle.net/akxWF/1/

JS

$('body').find('*:contains("hello")').each(function(){
    var h = $(this).html(); 
    //alert(h); 
    h = h.replace('hello', '<span class="highlight">hello</span>');
    $(this).html(h); 
}); ​

HTML

<table>
    <tr>
        <td>hello some more text</td><td>test</td>   
    </tr>
</table>
<div>hello testing<div>More data</div></div>
<span>hello</span>

CSS

.highlight{
 background-color:yellow;    
}​

答案 1 :(得分:1)

在span标签中包装所有“hello”并给它一个“hello”类

<span class="hello">hello</span> world
by world
<span class="hello">hello</span> goodbye
yellow submarine
yo hello

使用jquery

var allHello = $('.hello').text();

你能做的其他方法是使用正则表达式,但如果你知道你的内容则不需要它。

答案 2 :(得分:0)

屏幕抓取所遵循的常用方法是将需要捕获或搜索的文本放在带有ID的DIV标记内。完成此操作后,您将能够执行DIV标记ID的getElementsByTagName以获取整个文本。

希望这很清楚。如果这不是您想要的,我建议您添加更具体的问题。

答案 3 :(得分:0)

  

如何在所有文本中抓取“你好”

我不确定我是否得到了这个问题,但要抓住“你好”,你可以做到:

var td = document.getElementsByTagName('td')[0],
    td = (td.textContent || td.innerText || ""),
    hello = td.match(/hello/gi);

这将返回一个包含所有“hello”的常规javascript数组?

FIDDLE