【问题标题】:Locating Dynamic Elements Through innerHTML通过 innerHTML 定位动态元素
【发布时间】:2016-12-26 19:07:42
【问题描述】:

我需要在加载用户信息的网页上测试特定的 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>

我是 DOM 和 Javascript 的新手,如果这令人困惑,我深表歉意。

提前致谢

【问题讨论】:

  • 您为什么要发布您的标记图片?您可以在问题中包含您的标记(和您的代码),这样其他人可以更轻松地帮助您。

标签: javascript html dom innerhtml


【解决方案1】:

您可以像这样在jQuery 中循环遍历同一类的所有元素:

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

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

【讨论】:

  • 没说不能使用第三方库
  • 是的,但我认为值得一提
【解决方案2】:
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 越大,它需要的时间就越长。因此,为了提高性能,可以从包含搜索到 shure 的父元素开始,例如 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");
}

【讨论】:

  • 如果你觉得它有帮助,请通过给予支持来奖励我;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-03
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 2019-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多