使用JavaScript / Ajax切换单选按钮的更简单方法?

时间:2016-07-20 11:56:00

标签: javascript html ajax

我设置了这样的单选按钮:

<hr />
<h2>PhoneyTV Cabana</h2>
<p>
  <input type="radio" id="phoneyRadio1" value="0" onclick="toggleParticlePower(phoneyID, phoneyPowerFunction, this.value)" name="led" />Off
  <input type="radio" id="phoneyRadio2" value="1" onclick="toggleParticlePower(phoneyID, phoneyPowerFunction, this.value)" name="led" />On
</p>

必须有一种更简单的更新统计数据的方法:

$.getJSON(myURL, function(data) {
  state = (parseInt(data.result) == 1)
  if (state) {
    $('#phoneyRadio1').attr('checked', false);
    $('#phoneyRadio2').attr('checked', true);
  } else {
    $('#phoneyRadio2').attr('checked', false);
    $('#phoneyRadio1').attr('checked', true);
  }
});

我尝试突出显示“激活”按钮,但我遇到了麻烦......

我错过了什么明显的捷径?

2 个答案:

答案 0 :(得分:0)

if (state) {
  $('#phoneyRadio1').attr('checked', false);
  $('#phoneyRadio2').attr('checked', true);
} else {
  $('#phoneyRadio1').attr('checked', true);
  $('#phoneyRadio2').attr('checked', false);
}

在上面的代码中,如果仔细观察,一个简单的模式,phoneyRadio1的值总是与条件相反,phoneyRadio2与条件相同。所以它可以简化为:

$('#phoneyRadio1').attr('checked', !state);
$('#phoneyRadio2').attr('checked', state);

现在,state = (parseInt(data.result) == 1)会使state成为一个全局变量(缺少var)。其次,您要将data.result转换为int,因此,由于您要匹配相同的类型值,因此应使用===而不是==

所以它看起来像var state = (parseInt(data.result) === 1)var state = (+(data.result) === 1)

Sample Fiddle

答案 1 :(得分:0)

你可以试试这个。

{{1}}