繁体   English   中英

布尔运算会影响JS中的变量吗?

[英]Boolean operations affect variables in JS?

我正在检查页面上的单选按钮的选中状态,以便在全部按下它们时继续进行操作:

<form>
  <input type="radio" name="tier0" />
  <input type="radio" name="tier1" />
  <input type="radio" name="tier2" />
  <input id="reset" type="button" value="Reset" />
</form>

每次按下tier1按钮且$ tier为true时,对$ result的评估都会以某种方式将$ tier2变为undefined,因此$ result从未为true,因此我无法继续。 检查一下: http : //jsfiddle.net/29ppxpgm/

var $tier0;
var $tier1;
var $tier2;
var $result;

function display() {
  $tier0 = $('[name=tier0]').prop('checked');
  $tier1 = $('[name=tier1]').prop('checked');
  $tier2 = $('[name=tier2]').prop('checked');

  // this boolean operation seems to affect the form elements
  $result = $tier0 && $tier1 && tier2;

  $('#result').html($tier0.toString() + ' & ' + $tier1.toString() + ' & ' + $tier2.toString() + ' => ' + $result.toString());
}

display();

$('input[type=radio]').click(function() {
  display();
});

$('#reset').click(function() {
  $('[type=radio]:checked').prop('checked', false);
  display();
});

怎么会?

在我看来,您的拼写错误,定义了$tier2 ,并将其引用为tier2

function display() {
  $tier0 = $('[name=tier0]').prop('checked');
  $tier1 = $('[name=tier1]').prop('checked');
  $tier2 = $('[name=tier2]').prop('checked');
  $result = $tier0 && $tier1 && *tier2*;  // it should be $tier2
  $('#result').html($tier0.toString() + ' & ' + $tier1.toString() + ' & ' + $tier2.toString() + ' => ' + $result.toString());
}

参见演示

那不是问题。 问题在这里

$result = $tier0 && $tier1 && tier2;

在这里,您说的是&& tier2 ,应该是&& $tier2

在您的演示中,您有$tier1, $tier2, $tier3 ,问题出在tier3

固定演示

似乎这里有错误:

$result = $tier0 && $tier1 && tier2;

这应该像

$result = $tier0 && $tier1 && $tier2;
                              ^---------This is added

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM