Не могу получить childnodes.length - PullRequest
3 голосов
/ 19 декабря 2011

Я пытаюсь найти узел, содержащий изображение, а затем найти определенную строку в теге этого изображения. Но я не знаю, когда на странице появится тег изображения, за исключением того, что он появляется только в 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». где-нибудь в срк. Я не могу заставить что-то еще случиться. Я знаю, что $ (img) .append будет влиять на КАЖДОЕ изображение, поэтому скрипт способен что-то делать.

Теперь это стало случаем получения большего, чем я хочу, или вообще ничего, и это действительно начинает действовать мне на нервы.

Ответы [ 3 ]

5 голосов
/ 19 декабря 2011

i.ChildNodes не определено.
Вы имеете в виду childNodes.

Также i - это число, а не элемент DOM.
Вы имеете в виду dTabs[i].

2 голосов
/ 19 декабря 2011

var myNodes = dTabs[i].ChildNodes;

1 голос
/ 21 декабря 2011
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');
        }

    });

}

Это позволит найти что-либо внутри элемента с идентификатором "mainContent", если это изображение.Затем он определит, является ли строка "-ds."находится где-нибудь в имени изображения.Поэтому «my-friends-ds.jpg» добавит что-то к этому.

Если изображение находится внутри ссылки, «.parent ()» пропускает скрипт за пределы этой ссылки ПЕРЕД добавлением сообщения.Это препятствует тому, чтобы добавленное содержание стало ссылкой.

Если изображение НЕ находится внутри ссылки, удалите «.parent ()» из строки, и оно должно добавить сообщение сразу после изображения.

...