10

我正在尝试使用三元运算符来检查 XML 元素的值是否为空。如果是,那么我希望变量是一回事。如果不是,那么我希望它返回元素的值。这就是我到目前为止所拥有的。

var rating = data.getElementsByTagName("overall_average")[0].childeNodes[0].length > 0 ? data.getElementsByTagName("overall_average")[0].childeNodes[0].nodeValue : "It is empty";
4

3 回答 3

16

这里:

var node = data.getElementsByTagName( 'overall_average' )[0].childNodes[0];
var rating = node ? node.nodeValue : 'It is empty';

请注意,如果 中没有单个“overall_average”元素,则此代码会引发(错误)data,因此您可能希望在必要时防止这种情况...

于 2012-07-20T20:25:23.090 回答
6

最短的方法:

var rating = (data.getElementsByTagName('overall_average')[0].childNodes[0] || {}).nodeValue || 'It is empty';
于 2012-07-20T20:29:51.933 回答
2

你的三元操作在我看来很好。我建议的一件事(为了可读性和简洁性)是将您的overall_average对象定义为变量并在之后引用它。

var overall_average = data.getElementsByTagName("overall_average")[0].childeNodes[0];
var rating = overall_average.length > 0 ? overall_average.nodeValue : "It is empty";

祝你好运!

于 2012-07-20T20:25:37.990 回答