2013-05-21 42 views
2

我想从HTML页面抓取一个字符串。该字符串位于不带ID的div标签内,并具有不断变化的title属性。如何使用JavaScript从HTML文档中抓取字符串

它看起来是这样的:

<div title = [this title changes depending on how the page is pulled up]> 
EmailAddress [email protected] 
</div> 

我希望能够抓住“ABC @某某”出这个残局。

这个HTML文件是千变万化的,我知道肯定是不会变的唯一的事情是,我想抓住该字符串将始终坚持“EmailAddress的

我在一直盯着前面这3小时没有进展。如果有人能指引我正确的方向,我会非常感激。

+0

你尝试使用[字符串()](http://www.w3schools.com/jsref/jsref_substring.asp) – Praveen

+5

什么你想用这些电子邮件去做一些邪恶的事情? –

回答

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 ',''); 
    } 
} 

See this fiddle

+0

这是完美的。非常感谢! –

+0

不客气:-) –

0

如果你没有通过一个ID包含的元素缩小的任何方式,那么你可以尝试阅读体内HTML和使用正则表达式来检索文本:

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

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

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

演示:Fiddle

-1
$('div').each(function(){ 
    var divText=$(this).text(); 
    var ok=divText.contains('EmailAddress') 
    if(ok){ 
     alert(divText); 
    } 
}); 
+0

我可以知道这段代码有什么问题吗? – sachin

相关问题