Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过innerHTML定位动态元素_Javascript_Html_Dom_Innerhtml - Fatal编程技术网

Javascript 通过innerHTML定位动态元素

Javascript 通过innerHTML定位动态元素,javascript,html,dom,innerhtml,Javascript,Html,Dom,Innerhtml,我需要在加载用户信息的网页上测试特定的innerHTML字符串。我的问题是,此元素的位置[14]根据是否存在其他帐户详细信息而有所不同。(即,有时此innerHTML是[15]或[16])innerHTML除了类名“style16”之外没有其他标识符 此外,innerHTML在每个帐户之间都会发生变化,因此我需要测试它的值 我是否需要创建某种类型的var来引用此元素位置?如果是,我该怎么做 以下是HTML: <tr> <td class="style16">Zip:&

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

此外,innerHTML在每个帐户之间都会发生变化,因此我需要测试它的值

我是否需要创建某种类型的var来引用此元素位置?如果是,我该怎么做

以下是HTML:

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

邮编:
12345
国家代码:
真实航向
我是DOM和Javascript的新手,如果这让人困惑,我深表歉意

提前谢谢

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(“父”))

如果知道父元素的类,可以执行以下操作:

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

您可以在
jQuery
中循环使用同一类的所有元素,如下所示:

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

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

为什么要发布标记的图片?你可以在问题中加入你的标记(和你的代码),这样别人就更容易帮助你了。我并没有说它不能使用第三方库eEP,但我认为值得一提的是,如果你觉得它有帮助,请通过放弃投票来奖励我;)