2016-12-26 52 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

是的,但我認爲這將是值得一提的 –