Javascript三元运算符不起作用

时间:2018-06-30 11:30:35

标签: javascript jquery

http://jsfiddle.net/xpvt214o/333878/

let maxValues = jQuery('#slider').map(function(){
  return this.max;
}).get();
let maxbudget = maxValues.join();
jQuery(document).on('input', '#slider', function() {
  // On récupère la valeur maximal de l'input range
  let value = jQuery(this).val();
  console.log(value);
  // si on utilise la valeur maximale du budget  alors on affiche en plus 'budget de xx€ et au-delà'

  jQuery(this).val() === maxValues.join() ? jQuery('#slider_value').html( jQuery(this).val() + ' € et au-delà') : '';
  jQuery(this).val() < maxValues.join() ? jQuery('#slider_value').text(  jQuery(this).val() + ' €') : '';

  // if ( jQuery(this).val() === maxValues.join()) {
  //   jQuery('#slider_value').html( jQuery(this).val() + ' € et au dela');
  // }
  // else{
  //   jQuery('#slider_value').html( jQuery(this).val() + ' €');
  // }
});

3-10k不能与三元函数一起工作,但是如果/其他都不能正常工作,我的三元运算符有什么问题?

3 个答案:

答案 0 :(得分:0)

您的编码方式,如果条件为false,则该语句将生成一个独立的空字符串('')。由于该字符串没有分配给任何东西,也没有传递给任何方法,因此它对任何东西都没有任何影响,就像您已编写此代码一样:

'';

(这是有效的代码,可能令人惊讶。)

我猜您想使用''作为传递给htmltext的值。如果是这样,则要将条件运算符¹放入参数中

jQuery('#slider_value').html( jQuery(this).val() === maxValues.join() ? jQuery(this).val() + ' € et au-delà' : '');
jQuery('#slider_value').text( jQuery(this).val()  <  maxValues.join() ? jQuery(this).val() + ' €'            : '');

旁注:

最好一次执行jQuery(this).val() 并将结果存储在变量中,这主要是为了清楚起见,但这也是因为jQuery(this).val()会执行多个函数调用并在幕后:

var value = jQuery(this).val();
jQuery('#slider_value').html( value === maxValues.join() ? value + ' € et au-delà' : '');
jQuery('#slider_value').text( value  <  maxValues.join() ? value + ' €'            : '');

实际上,在现代浏览器中,即使使用jQuery(this).val()元素,也可以将this.value写入select


¹? :运算符的正确名称是“条件运算符”。它是 a 三元运算符(一个接受三个操作数的运算符),并且它是JavaScript唯一的三元运算符,但是谁知道,也许有一天会添加另一个...

答案 1 :(得分:0)

  

3-10k不能与三元函数一起工作,但是如果/其他都不能正常工作,我的三元运算符有什么问题?

jQuery(this).val()是字符串,因此<进行字符串比较。滑块下方的文本在值为时不会更新。 3500,因为"3500"按字母顺序(而不是数字!)紧跟"30000"之后。

(该文本不会更新为"30000 € et au dela",因为该值不等于30000,所以另一行也不执行任何操作。)

答案 2 :(得分:0)

   jQuery(this).val() === maxValues.join() ? jQuery('#slider_value').html( jQuery(this).val() + ' € et au-delà') : jQuery('#slider_value').html( jQuery(this).val() + ' €');;

工作