我正在尝试从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个小时而没有任何进展。如果有人能指出我正确的方向,我会非常感激。
答案 0 :(得分: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 ','');
}
}
答案 1 :(得分:0)
如果您没有办法通过ID缩小包含元素,那么您可以尝试读取正文HTML并使用正则表达式来检索文本:
var html = document.getElementsByTagName('body')[0].innerHTML;
var result = html.match(/EmailAddress\s([^<]+)</i)[1];
这是一个非常基本的正则表达式,但应该从头开始。
答案 2 :(得分: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
答案 3 :(得分:-1)
$('div').each(function(){
var divText=$(this).text();
var ok=divText.contains('EmailAddress')
if(ok){
alert(divText);
}
});