0
var round1 = output.parentNode.parentNode.parentNode.getElementsByTagName('a')[0].innerHTML


Internet Explorer 7 给我错误“无法获取属性'innerHTML' 的值:对象为空或未定义”,当代码清楚地适用于 ie 9 ff 和 chrome 任何建议时。

4

2 回答 2

2

只是不要这样做,即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 || "";
于 2011-05-30T08:19:32.390 回答
0

output.parentNode.parentNode.parentNode所以getElementsByTagName('a')[0]返回中似乎没有“a”-Tag null;)

于 2011-05-30T08:08:38.533 回答