无法获得childnodes.length

时间:2011-12-19 18:40:35

标签: javascript jquery html-table

我正在尝试查找包含图像的节点,然后在该图像的标记中找到特定的字符串。但我不知道在页面上何时会出现图片代码,只是它出现在td个被归类为bodyTextSmall的元素中。那应该让我到那儿,对吗?

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

这是正确的代码,还是有另一种方法可以找出特定的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会影响每个图像,所以脚本能够做某事。

现在这已成为获得超出我想要的东西或根本没有任何东西的情况,它真的开始让我最后的紧张。

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

var myNodes = dTabs[i].ChildNodes;

答案 2 :(得分:1)

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()”,并且应该在图片后直接添加消息。