【问题标题】:Why does is my onchange event triggered when my page loads instead of when I click my radio button?为什么当我的页面加载而不是单击单选按钮时触发我的 onchange 事件?
【发布时间】:2013-05-13 06:25:08
【问题描述】:

我的 Javascript 中有以下代码。我希望在用户检查单选按钮时发生警报,​​但它会在页面加载时发生,而当单选按钮被选中时不会发生任何事情。为什么?

var myRadioButton = document.getElementById("myRadioButton");
myRadioButton.onchange=alert("Checked!");

单选按钮开始时未选中。在 HTML 中它看起来像这样:

<div class="myRadioButton"><input type="radio" id="myRadioButton" name="radioButtons"  />&nbsp; This is my radio button 
</div>

为什么 Javascript 会认为页面加载时发生了 onchange 事件?当我实际检查单选按钮时,为什么它不识别更改?

事实上,我在onchange 中使用的任何元素都会在页面加载时弹出警报,根本不需要任何用户交互。我是否误解了onchange 的工作原理?

【问题讨论】:

    标签: javascript radio-button dom-events onchange


    【解决方案1】:

    你的意思是

    myradiobutton.onchange = function() { alert('Checked'); };
    

    您所做的将执行 alert 函数并将该函数的返回值 作为事件处理程序分配给onchange 事件(这将执行执行时什么都没有)

    【讨论】:

    • 明白了。谢谢!我是个十足的菜鸟。非常感谢。
    【解决方案2】:

    试试

    <script>
        var myRadioButton = document.getElementById("myRadioButton");
    
        myRadioButton.onchange = function () { alert("Checked!") };
    </script>
    

    【讨论】:

    • 很好,但重要的是将此代码包装在 document.ready 事件处理程序中
    【解决方案3】:

    在您的代码中

    myradiobutton.onchange = alert('Checked')
    

    您实际上调用了警报函数,并将其返回值分配为事件处理程序。

    【讨论】:

      猜你喜欢
      • 2023-02-03
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      相关资源
      最近更新 更多