2016-12-26 79 views
-1

我需要在加载用户信息的网页上测试特定的innerHTML字符串。我的问题是,此元素的位置[14]根据其他帐户详情是否存在而有所不同。 (即有时这个innerHTML是[15]或[16])。innerHTML除类名“style16”外没有标识符。通过innerHTML定位动态元素

此外,每个帐户之间的innerHTML更改,因此我需要测试其值。

我是否需要创建某种类型的var来引用此元素位置?如果是这样,我该如何做到。

这里的HTML:

<tr> 
    <td class="style16">Zip:</td> 
    <td>12345</td> 
</tr> 
<tr> 
    <td class="style16">CountryCode:</td> 
    <td>TH</td> 
</tr> 

我是新来的DOM和JavaScript这样的道歉,如果这是令人困惑的。

在此先感谢

+1

你为什么发布你的标记图片?你可以在问题中包含你的标记(和你的代码),这样其他人可以更容易地帮助你。 – Nit

+0

我更新了,谢谢。 – Aleks

回答

0
function find(elem){ 
    if(elem.innerHTML=="TD"){ 
    return elem;//found elem lets return 
    } 
    for(child of elem.childNodes){ 
    if(var a=find(child)){ 
     return a;//a child of child of child... is the searched one, so return it 
    } 
    } 
return false;//nothing found 
} 

使用这样的:

window.onload=function(){ 
elem=find(document.body); 
if(elem){ 
// now you can use elem until it is destroyed... 
elem.innerHTML="found this"; 
}else{ 
alert("Sorry doesnt exist"); 
} 
} 

注:越大DOM到周期的波谷,它需要的时间越长。所以为了提高性能,可以从包含搜索到的一个父元素开始,例如find(document.getElementById(“parent”))

如果你知道父元素的类,你可以这样做:

var elems=[...document.getElementsByClassName("style16")]; 
var elem=false; 
var found=elems.some(function(el){ 
    if(el.parentNode.childNodes[1].innerHTML=="TD"){ 
     elem=el.parentNode.childNodes[1]; 
     return true;//kill execution 
    } 
}); 
if(found){ 
    console.log(elem); 
}else{ 
    alert("not found"); 
} 
+0

这很有帮助,谢谢。 – Aleks

+0

如果你觉得它有帮助,奖励我低谷给予upvote;) –

0

你可以通过这样的同一类的所有元素循环中jQuery

$('.style16').each(function(i, obj) { 
    var innerHTML = $(this).next().text();//next returns the next 'td' sibling 
}); 

这样,您就可以跟踪所有你正在寻找的innerHTML元素。

+0

请注意,这是jquery ... –

+0

没有说它不能使用第三方库 –

+0

是的,但我认为这将是值得一提的 –