问题描述
|
var round1 = output.parentNode.parentNode.parentNode.getElementsByTagName(\'a\')[0].innerHTML
当代码明显适用于9 ff并添加任何建议时,Internet Explorer 7给我错误“无法获取属性'innerHTML \'的值:对象为null或未定义”。
解决方法
只是不要这样做,即在不知道它是什么的情况下反复调用
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 || \"\";
, output.parentNode.parentNode.parentNode
中似乎没有\“ a \”-Tag,因此getElementsByTagName(\'a\')[0]
返回null
;)