我正在检查页面上单选按钮的已检查状态,以便在全部按下时继续:
<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时,$ result2的评估会以某种方式将$ tier2变为undefined,因此$ result永远不会成立,我无法继续。看看这个: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();
});
怎么回事?
答案 0 :(得分:2)
在我看来,您有一个变量类型,您定义了$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。
答案 1 :(得分:1)
那不是问题。问题在这里
$result = $tier0 && $tier1 && tier2;
您要说的是&& tier2
&& $tier2
。
在您的演示中,$tier1, $tier2, $tier3
问题出现tier3
。
答案 2 :(得分:1)
这里似乎有错误:
$result = $tier0 && $tier1 && tier2;
这应该像
$result = $tier0 && $tier1 && $tier2;
^---------This is added