如何避免javascript“rel”是null错误?请查看提供的代码

时间:2010-02-19 11:49:15

标签: javascript

我收到此javascript错误消息

Error: a.getAttribute("rel") is null

在这些代码行上

  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;

任何想法如何解决?

感谢。

3 个答案:

答案 0 :(得分:3)

在使用a.getAttribute("rel")之前,您正在做:

if(a.getAttribute("rel").indexOf("style") != -1 && 
    a.getAttribute("title") && 
    !a.disabled) {
    return a.getAttribute("title");
}

您应该测试它是否为空(或不是“麻痹”)

if(a.getAttribute("rel") &&
    a.getAttribute("rel").indexOf("style") != -1 && 
    a.getAttribute("title") && 
    !a.disabled) {
    return a.getAttribute("title");
}

if表达式的开头添加条件的第一部分时,仅当{{1}时,将评估条件的第二个(以及之后的部分)是 truthy - 即a.getAttribute("rel")a.getAttribute("rel")时不会评估。

答案 1 :(得分:1)

在尝试将其视为字符串之前,请检查rel是否已定义。

var rel = a.getAttribute("rel") ;
if(rel && rel.indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) {
    return a.getAttribute("title");
}

由于你只关心它,如果它有'样式',我们不需要明确检查它是否已定义,并且只能测试它是否真实。

答案 2 :(得分:1)

你的循环正在点击没有指定a的{​​{1}}(我猜这会适用于大多数人)。

rel