【问题标题】:Parameter passed into JS function is "undefined" on IE and Safari传递给 JS 函数的参数在 IE 和 Safari 上是“未定义的”
【发布时间】:2016-01-30 02:45:53
【问题描述】:

使用下面的 HTML 和 Javascript 代码,我发现在 iOS 上的 IE11 和 Safari 中,表单没有传递“选择”单选按钮的值。使用 alert() 函数,我可以看到“答案”是未定义的,而在 Chrone 和 Firefox 中,它具有“正确”或“错误”的预期值。

有人对如何解决这个问题有建议吗? 并且通过扩展:为什么它在 IE 和 Safari 中的行为不符合我的预期?

HTML:

    <form>
        <p><label><input type="radio" name="choice" value="right" />Choice One</label></p>
        <p><label><input type="radio" name="choice" value="wrong" />Choice Two</label></p>
        <p><input type="button" value="Check Answer" onclick="checkThing(choice.value)"></p>
    </form>

Javascript:

function checkThing(answer){
    if(answer == "right"){
        //Show one thing
    }
    else if(answer == "wrong"){
        //show another thing
    }
}

【问题讨论】:

  • 似乎 IE 没有将名称注册为全局变量,但 Firefox 和 Chrome 会,只是猜测

标签: javascript html forms internet-explorer safari


【解决方案1】:

这有点令人费解,但您必须进行迭代才能在 Internet Explorer 中运行。

我添加了一个 id 并从 onclick 事件中删除了参数 - 下面的工作(跨浏览器)版本:

function checkThing(){
    var answers = document.getElementById('myform').elements['choice'];
    for(var i = 0; i < answers.length; i++) {
        if (answers[i].checked === true) {
            answer = answers[i].value;   
        }
    }
    
    alert(answer);
}
   <form id="myform">
        <p><label><input type="radio" name="choice" value="right" />Choice One</label></p>
        <p><label><input type="radio" name="choice" value="wrong" />Choice Two</label></p>
        <p><input type="button" value="Check Answer" onclick="checkThing(choice.value)"></p>
    </form>

【讨论】:

    猜你喜欢
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 2013-08-08
    • 2016-06-14
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    相关资源
    最近更新 更多