[javascript plus运算符,否则不能与三元一起使用

问题描述 投票:0回答:2

嗨,这是我的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;
}

但是我需要使用三元运算符并在一行中完成。有办法吗?

javascript jquery
2个回答
3
投票

+具有比条件运算符(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'
);

1
投票

三元有这种模式:

condition ? do if true : do if false;

所以你的情况是

'<span> and have </span>' + $('#module_product_review_star_1 .pdp-link')[1] 
© www.soinside.com 2019 - 2024. All rights reserved.