2

我正在尝试从 HTML 页面中获取字符串。该字符串位于没有 ID 的 div 标签内,并且具有不断变化的 title 属性。

它看起来像这样:

<div title = [this title changes depending on how the page is pulled up]>
EmailAddress abc@xyz
</div>

我希望能够从这整个混乱中抓住“ abc@xyz ”。

这个 HTML 文档是不断变化的,我唯一确定保持不变的是我要抓取的字符串总是以“ EmailAddress ”开头

我一直盯着这个 3 个小时没有进展。如果有人能指出我正确的方向,我将不胜感激。

4

4 回答 4

4

没有 jQuery:

var divElements = document.getElementsByTagName( 'div' );

for ( var i = 0; i < divElements.length; i++ ) {
    if ( divElements[i].innerText.match( 'EmailAddress' ) ) {
        // your div 
        var mail_id =  divElements[i].innerText.replace('EmailAddress ','');
    }
}

看到这个小提琴

于 2013-05-21T06:26:27.830 回答
0

尝试这个

var x = document.querySelectorAll('div[title]'), email;
if(x.length){
    for(var i = 0; i < x.length; i++){
        var inner = x[i].textContent || x[i].innerText;
        if(/EmailAddress/.test(inner)){
            email = inner.substring(inner.indexOf('EmailAddress') + 13);
            email = email.replace(/\s.*$/, '')
            break;
        }
    }
}

演示:小提琴

于 2013-05-21T06:38:08.997 回答
0

如果您无法通过 ID 缩小包含元素的范围,则可以尝试读取正文 HTML 并使用正则表达式检索文本:

var html = document.getElementsByTagName('body')[0].innerHTML;
var result = html.match(/EmailAddress\s([^<]+)</i)[1];

这是一个非常基本的正则表达式,但应该从一开始就完成这项工作。

于 2013-05-21T06:26:26.200 回答
-1
$('div').each(function(){
    var divText=$(this).text();
    var ok=divText.contains('EmailAddress')
    if(ok){
      alert(divText);
    }
});
于 2013-05-21T07:02:14.020 回答