javascript - JS中 bool 运算影响变量?

标签 javascript jquery

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

<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 变为未定义,因此 $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());
}

参见Demo .

关于javascript - JS中 bool 运算影响变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26435549/

相关文章:

c# - 存在临时数据未清除的问题

javascript - 使用 AJAX 将 videoID 放入 iframe 中

javascript - 为什么测试字符等于同一个字符?

javascript - Bootstrap 模式弹出窗口不关闭

javascript - 给每个角色涂上不同的颜色

php - 没有脚本标签 - 可靠吗?安全的?

javascript - 如何创建Spine模型而不通过Spine自动将ajax事件重新发布到服务器

javascript - jQuery foreach 复选框在 tr > 第一个 td 中选中

javascript - 如何使用 Rollup 将本地 typescript 文件捆绑到主包中

java - 在几秒钟内从 Spring MVC 中的表中获取 400K 数据