Javascript 除了这个未定义的方法,您将如何处理

Javascript 除了这个未定义的方法,您将如何处理,javascript,exception-handling,Javascript,Exception Handling,我想检查元素是否存在,并且其中一个方法是否不是空的 请查看以下代码: var description; var desc = forecasts[i].getElementsByTagName('desc')[0] if (desc != null || desc.textContent == "") { description = desc.textContent } var描述; var desc=预测[i]。getElementsByTagName('desc

我想检查元素是否存在,并且其中一个方法是否不是空的

请查看以下代码:

var description; var desc = forecasts[i].getElementsByTagName('desc')[0] if (desc != null || desc.textContent == "") { description = desc.textContent } var描述; var desc=预测[i]。getElementsByTagName('desc')[0] 如果(desc!=null | | desc.textContent==“”){ description=desc.textContent } 因此,基本上,如果未定义元素,它会给我一个错误:

未捕获类型错误:无法读取未定义的属性“textContent”


嗯,我可以使用嵌套的
ifs
,但我认为应该有一个更好的解决方案来解决这个问题。

您的情况是错误的:

desc != null || desc.textContent == ""
因为
未定义!=null
计算为
false
,然后该条件将尝试访问
desc.textContent

如果内容存在且不为空,则似乎要复制该内容;这可以在以下条件下完成:

var description,
desc = forecasts[i].getElementsByTagName('desc')[0];

if (desc && desc.textContent.length) {
    description = desc.textContent;
}

你的情况不对:

desc != null || desc.textContent == ""
因为
未定义!=null
计算为
false
,然后该条件将尝试访问
desc.textContent

如果内容存在且不为空,则似乎要复制该内容;这可以在以下条件下完成:

var description,
desc = forecasts[i].getElementsByTagName('desc')[0];

if (desc && desc.textContent.length) {
    description = desc.textContent;
}

var string=”“;如果(string)
在JavaScript中的计算结果为false,那么您只需删除相等检查,并确保
desc.textContent
的计算结果不为false


如果
desc
存在,但
desc.textContent
未继续并获取
desc.textContent
,则还应删除OR运算符。将OR语句替换为AND运算符
if(desc&&desc.textContent)

示例:-注意有3条if语句,但只有一条计算结果为true


var string=”“;如果(string)
在JavaScript中的计算结果为false,那么您只需删除相等检查,并确保
desc.textContent
的计算结果不为false


如果
desc
存在,但
desc.textContent
未继续并获取
desc.textContent
,则还应删除OR运算符。将OR语句替换为AND运算符
if(desc&&desc.textContent)


示例:-注意有3条if语句,但只有一条语句的计算结果为true。

实际上未定义==null为true。试试看。。。只有未定义的===null是错误的。问题是您在应用程序中“修复”的or运算符answer@MofX感谢您发现了这一点,我本想说它的计算结果为
false
,但我忘了在我的答案中加上:)实际上undefined==null是true。试试看。。。只有未定义的===null是错误的。问题是您在应用程序中“修复”的or运算符answer@MofX感谢您发现了这一点,我的意思是它的计算结果为
false
,但是我忘了在我的答案中加上:)
desc.textContent
实际上会导致一个错误,因为在这种情况下没有定义
desc
。@我看到的杰克只是在测试这个问题,我已经更新了我的答案。代码现在是正确的,但答案的其余部分似乎没有很好的关联。@Jack我不明白你为什么这么认为,它解释了我对他的原始代码所做的更改。
desc.textContent
实际上会导致错误,因为在本例中未定义
desc
。@我看到Jack正在测试这个,我已经更新了我的答案。代码现在是正确的,但是答案的其余部分似乎与之不太相关。@Jack我不明白你为什么这么认为,它解释了我对他的原始代码所做的更改。