当我要搜索的所有元素都已声明时,我的脚本工作正常,但我无法弄清楚如何测试元素是否存在。
$placeHolder.getElementsByTagName(tagname)[0].firstChild.data; // works if the element exists
我尝试测试这些代码行:
if (!($placeHolder.getElementsByTagName(tagname)[0].firstChild.data in window)) //always true
{
alert("this doesn't exist");
return $noValue;
}
else
return $placeHolder.getElementsByTagName(tagname)[0].firstChild.data;
即使元素存在,if 语句为 true 并执行第一个代码块,如果它不存在,它只会生成一个错误,指出 '$placeHolder.getElementsByTagName(tagname)[0].firstChild.data'未定义。
接下来我尝试了这个方法:
if (typeof $placeHolder.getElementsByTagName(tagname)[0].firstChild.data == "undefined")
{
alert("this doesn't exist");
return $noValue;
}
else
return $placeHolder.getElementsByTagName(tagname)[0].firstChild.data;
如果元素确实存在,这个实际上可以正常工作,但仍然会产生与上面的错误相同的错误。
我尝试制作一个 try catch block ,但遇到了同样的问题,必须测试元素是否未定义。 D:<
我需要的是一种简单的方法来查看相关元素是否存在(即它是否未定义)。是否有我不知道的方法或者我做错了什么?
编辑2:做$placeHolder.getElementsByTagName(tagname).length
在元素未定义的情况下有效,但如果它是这样的元素:
<anElement></anElement>
$placeHolder.getElementsByTagName(tagname).length 返回 true,当元素中没有任何内容时执行该语句。尝试这个测试:
if ($placeHolder.getElementsByTagName(tagname)[0].firstChild.data == null)
也不起作用。
最佳答案
首先需要检查 $placeHolder
中是否存在具有特定 tagname
的元素。 getElementsByTagName
返回 NodeList
,以便您可以检查其长度
,如下所示:
if( $placeHolder.getElementsByTagName(tagname).length > 0 )
关于javascript - 测试 XML 元素是否存在时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18681020/