嗨,这是我的js代码。
var a = '<span> and have </span>' + $('#module_product_review_star_1 .pdp-link')[1] ? $('#module_product_review_star_1 .pdp-link')[1].outerHTML : 'not have';
alert(a);
我正在使用三元运算符来检查dom中是否存在该项目。但是,如果该物品不在国内,则此代码将失败。
此方法有效,
if($('#module_product_review_star_1 .pdp-link')[1]){
questiones = '<span> and have </span>' + $('#module_product_review_star_1 .pdp-link')[1].outerHTML;
}
但是我需要使用三元运算符并在一行中完成。有办法吗?
+
具有比条件运算符(4)高的运算符优先级(13),因此您的代码正在检查'<span> and have </span>' + $('#module_product_review_star_1 .pdp-link')[1]
是否为真,它将始终为真。用圆括号括住</span>
之后的所有内容:
var a = '<span> and have </span>' + (
$('#module_product_review_star_1 .pdp-link')[1]
? $('#module_product_review_star_1 .pdp-link')[1].outerHTML
: 'not have'
);
也就是说,最好编写DRY代码并将$('#module_product_review_star_1 .pdp-link')[1]
首先放入变量中:
var possibleLink = $('#module_product_review_star_1 .pdp-link')[1];
var a = '<span> and have </span>' + (
possibleLink
? possibleLink.outerHTML
: 'not have'
);
三元有这种模式:
condition ? do if true : do if false;
所以你的情况是
'<span> and have </span>' + $('#module_product_review_star_1 .pdp-link')[1]