javascript - 如何在 radio 输入上添加 eventListener

标签 javascript

我有这段代码,它工作正常,但在 document.myform.onchange 的第一瞬间,我尝试了 document.myform.elem.onclick 并且最后的代码没有想要工作,只有当我把它放在表格上时,它才会起作用,为什么会这样?

<form name="myform">
            <input type="radio" name="car" value="audi">audi<br>
            <input type="radio" name="car" value="bmw">bmw
            <div id="text">some text is here</div>
 </form>

function ready() {
    var elem = document.getElementsByName("car");
    var hid = document.getElementById("text");
    var i;

    document.myform.onchange = function() {
       for (i = 0; i < elem.length; i++) {
            if (elem[0].checked == true) {
                hid.style.display = "none";
            } else {
                hid.style.display = "block";
            }
        } 
    }
}

document.addEventListener("DOMContentLoaded", ready);

最佳答案

  • 通过 radio 按钮(循环)注册 change 事件而不是 form
  • 不处理 radio-inputindex,而是检查选中的单选按钮的值

function ready() {
  var elem = document.getElementsByName("car");
  var hid = document.getElementById("text");
  for (var i = 0; i < elem.length; i++) {
    elem[i].onchange = function() {
      if (this.value === 'audi') {
        hid.style.display = "none";
      } else {
        hid.style.display = "block";
      }
    }
  }
}

document.addEventListener("DOMContentLoaded", ready);
<form name="myform">
  <input type="radio" name="car" value="audi">audi
  <br>
  <input type="radio" name="car" value="bmw">bmw
  <div id="text">some text is here</div>
</form>

关于javascript - 如何在 radio 输入上添加 eventListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38379758/

相关文章:

javascript - 如何访问包内的 meteor 包名称?

javascript - 将 $ ('body' ).on ('click' ) 与 $(window).resize(function() in jQuery

javascript - Div 隐藏不起作用

javascript - 在 Angular 2 中显示从子组件到父组件的已检查 id

javascript - 为什么变换会移动整个坐标系而不是仅仅移动 SVG 中的元素?

javascript - 当流库抛出错误时正确处理 Gulp.js 乙烯基流错误

javascript - 我怎样才能使这个功能在 Javascript 中更快?

javascript - 使用 JQUERY 加载函数从另一个页面加载输入值

javascript - NodeJS 中延迟将网络数据写入磁盘

javascript - 如何防止 DOM 附加期间表行高故障?