无法获取 childnodes.length

Posted

技术标签:

【中文标题】无法获取 childnodes.length【英文标题】:Can't get childnodes.length 【发布时间】:2012-01-23 20:23:12 【问题描述】:

我试图找到一个包含图像的节点,然后在该图像的标签中找到一个特定的字符串。但我不知道图像标签何时会出现在页面上,除了它只出现在被归类为bodyTextSmalltd 元素中。那应该能让我到达那里,对吧?

一切正常,直到我尝试获取childNodes 属性的length。见上一行。

这是正确的代码,还是有另一种方法可以找出特定的 td 是否在其中某处有 img 标记?我正在撕掉我剩下的一点头发,因为根据我对 javascript 的了解,它应该是这样工作的。

问题是我只通过img标签知道我是否需要格式化td标签,我没有组装td标签,无法进入网站的那部分直接进行更改。我已经尝试过 CSS 选择器来查看是否可以设置部分图像的样式,但是有些内联样式我无法覆盖。同样,这是我无法控制的网站的一部分。

<script type="text/javascript">

function getTables(dRef) 

var d = document;
var dMid = d.getElementById('mainContent');
var dTabs = dMid.getElementsByTagName('td');

  //  Attempts to load table cells...
  for (var i = 0; i < dTabs.length; i++) 
    //  Attempts to detect the specific cell type...
    if (dTabs[i].className == "bodyTextSmall") 
      //  Attempts to locate the parts inside this cell...
      var myNodes = i.ChildNodes;  //  This part runs, but I can't get "ChildNodes.length" to work

      //  Attempts to notify the user...
      alert(dTabs[i].className + ':  ' + i);
    
  



window.onload = getTables;

</script>

所以,现在我已经切换到 jQuery,我遇到了同样的问题。我可以分辨出图像在哪里,但我无法对图像本身做任何事情。

<script type="text/javascript"> 

function getTables() 
    //  Locates the correct container for images...
    $('#mainContent img').each(function(idx, item) 
        var tImgs = item.src;
        if (tImgs.indexOf("-ds.") > 0) 
            window.alert(tImgs);
            $(this).append('Here is a message about the image.');  //nothing happens here
        

    );



window.onload = getTables;

</script>

同样,此 jQuery 代码通过响应任何具有“-ds”的图像来响应。 src 中的任何位置。我不能让其他任何事情发生。我知道 $(img).append 会影响每张图片,所以脚本可以做一些事情。

现在这已经变成了得到比我想要的更多或什么都没有的情况,这真的开始让我感到最后的神经了。

【问题讨论】:

【参考方案1】:

i.ChildNodes 未定义。 你的意思是childNodes

另外,i 是一个数字,而不是 DOM 元素。 你的意思是dTabs[i]

【讨论】:

【参考方案2】:

var myNodes = dTabs[i].ChildNodes;

【讨论】:

【参考方案3】:
function dFixIt() 

    $('#mainContent img').each(function(idx, item) 
        var tImgs = item.src;
        if (tImgs.indexOf("-ds.") > 0) 
            $(this).parent().after('Here is a message about the image');
        

    );


如果它是图像,这将定位 ID 为“mainContent”的元素内的任何内容。然后它将判断字符串是否为“-ds”。位于图像名称中的任何位置。所以“my-friends-ds.jpg”会添加一些东西。

如果图像在链接内,“.parent()”会在添加消息之前将脚本跳转到该链接之外。这样可以防止添加的内容成为链接。

如果图片不在链接中,从字符串中删除“.parent()”,它应该直接在图片后面添加消息。

【讨论】:

以上是关于无法获取 childnodes.length的主要内容,如果未能解决你的问题,请参考以下文章

错误:您所请求的网址(URL)无法获取 怎么搞的?

无法使用 StorageClass 配置卷 - 无法获取存储帐户的存储密钥

无法在VSTS版本中获取Azure Vault密钥 - 无法获取JWT

怎么解决电脑无法自动获取IP地址呢?

"您所请求的网址(URL)无法获取"怎么解决

为啥Android有时无法获取位置