Несколько родительских узлов не работают в Internet Explorer 7 - PullRequest
0 голосов
/ 30 мая 2011
var round1 = output.parentNode.parentNode.parentNode.getElementsByTagName('a')[0].innerHTML


Internet Explorer 7 выдает мне сообщение об ошибке «Невозможно получить значение свойства« innerHTML »: объект нулевой или неопределенный», когда код четко работает, например, 9 ff и chrome любые предложения.

Ответы [ 2 ]

2 голосов
/ 30 мая 2011

Только не делайте этого, то есть неоднократно вызывайте parentNode, даже не зная, что это такое.DOM может выглядеть совсем не так, как вы ожидаете.Это примерно так же умно, как и не выполнять никаких проверок дальности просто для удобства.

Вместо этого используйте защитный и гибкий подход (или используйте фреймворк, такой как jQuery, чтобы выполнять тяжелую работу).

function closest(node, tagName) {
  var parent = node.parentNode;
  if (parent) {
    if (parent.tagName && parent.tagName.toUpperCase() === tagName.toUpperCase()) {
      return parent;
    }
    return closest(parent, tagName);
  }
}

var container = closest(node, "table");
var firstLink = container.getElementsByTagName('a')[0];
var round1    = firstLink.innerHTML || "";
0 голосов
/ 30 мая 2011

Кажется, что в output.parentNode.parentNode.parentNode нет тега "a", поэтому getElementsByTagName('a')[0] возвращает null;)

...