【问题标题】:.checked not identifying if a radio button is checked.checked 不识别单选按钮是否被选中
【发布时间】:2016-09-27 14:42:28
【问题描述】:

我在页面上有一些单选按钮,我只需要根据 ID 确定在我的 JS 中检查了哪个单选按钮。我不确定为什么这不起作用。每次,我都会在控制台中收到“未检查”消息。谢谢!

HTML:

<input type="radio" id="aud1">elephant</input>
<input type="radio" id="aud2">prairie dog</input>
<input type="radio" id="aud3">tiger</input>

JS:

var aud;
if (document.getElementById('aud1').checked) {
  var aud = document.getElementById('file1');
}else if(document.getElementById('aud2').checked) {
 var aud = document.getElementById('file2');
}else if (document.getElementById('aud3').checked){
 var aud = document.getElementById('file3');
}
else console.log('nothing checked');

【问题讨论】:

  • 但页面加载时没有检查任何内容。这是从另一个函数调用的吗?

标签: javascript radio-button checked


【解决方案1】:

您是否明确需要此代码?为什么不使用单个类,并将文件名/描述作为自定义属性,如下所示:

    <input type="radio" name="animals" class="order" data-animal="elephant" />elephant
    <input type="radio" name="animals" class="order" data-animal="zebra" />zebra
    <input type="radio" name="animals" class="order" data-animal="lion" />lion


<script>
    $(".order").click(function () {
    var choice = this.getAttribute("data-animal");

    alert(choice);
    /* console.log(choice); */
})
</script>

这样你就不必手动继续添加更多代码,你可以使用相同的类和不同的属性值在顶部添加 html...更容易维护 -

另外,因为你有一个 elseif,我添加了一个名称来将它们分组为单独的收音机,正如我认为你想要的那样?

 <input type="radio" name="animals" class="order" checked data-animal="zebra">zebra

请记住,输入标签没有结束标签 - 只是 /> 在末尾而不是 >

【讨论】:

  • 谢谢--是的,我想重构它,这样它就不会那么脆弱了。问题是我需要为特定的音频文件设置一个变量。我想我可以在每个自定义属性之后命名变量。
  • 是的 wd 工作 - 如果您打算在网站上使用它们,请确保您的文件名是 url 友好的。并遵循实际文件的文件名约定。
【解决方案2】:

见下文。我在您的代码中添加了一个按钮,您可以在检查后单击该按钮。

最初,当页面加载时,没有点击任何内容。您的 JS 在页面构建后立即运行,这就是您看到没有点击的原因。

document.getElementById('check-radios').onclick = function() {
  var aud;
  if (document.getElementById('aud1').checked) {
    var aud = document.getElementById('file1');
    console.log('aud1 checked');
  } 
  else if (document.getElementById('aud2').checked) {
    var aud = document.getElementById('file2');
    console.log('aud2 checked');
  } 
  else if (document.getElementById('aud3').checked) {
    var aud = document.getElementById('file3');
    console.log('aud3 checked');
  } 
  else console.log('nothing checked');
}
<input type="radio" id="aud1">elephant</input>
<input type="radio" id="aud2">prairie dog</input>
<input type="radio" id="aud3">tiger</input>

<button id="check-radios">Check for clicked</button>

【讨论】:

  • 哦,哇。当然。我不敢相信我错过了!!!感谢您指出对我来说显而易见的事情!
  • 没问题,如果这有帮助,请接受作为答案:)
猜你喜欢
  • 1970-01-01
  • 2014-06-25
  • 2019-12-21
  • 2018-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-06
  • 2014-04-23
相关资源
最近更新 更多