我想检查元素是否存在且其中一个方法不是空白的?
请查看以下代码:
var description; var desc = forecasts[i].getElementsByTagName('desc')[0] if (desc != null || desc.textContent == "") { description = desc.textContent }
所以基本上如果没有定义元素,它会给我一个错误:
Uncaught TypeError: Cannot read property 'textContent' of undefined
好吧,我可以使用嵌套的ifs
,但我认为应该有更复杂的解决方案来解决这个问题。
答案 0 :(得分:3)
你的情况错了:
desc != null || desc.textContent == ""
由于undefined != null
评估为false
,因此该条件将尝试访问desc.textContent
。
如果内容存在且不为空,您似乎想要复制内容;这可以通过以下条件来完成:
var description,
desc = forecasts[i].getElementsByTagName('desc')[0];
if (desc && desc.textContent.length) {
description = desc.textContent;
}
答案 1 :(得分:1)
var description;
var desc = forecasts[i].getElementsByTagName('desc')[0]
if (desc && desc.textContent) {
description = desc.textContent
}
var string = ""; if (string)
在JavaScript中评估为false,因此您只需删除相等性检查,并确保desc.textContent
不会评估为false。
您还应该删除OR运算符,因为您说desc
存在,但desc.textContent
没有继续并获得desc.textContent
。用AND运算符if (desc && desc.textContent)
替换OR语句。
示例: http://jsfiddle.net/pFBpc/5/ - 请注意,有3个if语句但只有一个的计算结果为true。