无法从html按钮调用js函数

时间:2014-09-07 01:54:18

标签: javascript function button call invoke

我正在编写一个程序,用它来创建一个带有一串食物的cookie。按下提交后,复选框中的任何食物都应收集到一个字符串中,然后记录到文档的cookie中。然后alert()显示我的cookie用于调试目的。

我无法通过html按钮成功调用submit()函数。当我按下提交时,脚本标签中的所有代码都会执行我的提交功能的EXCEPT。我尝试重新排序我的脚本代码,但没有帮助。

我的程序在不同的doctypes,ide和浏览器中表现相同,所以我知道它不是环境问题。

    <body>
    <div>
        <form>
            Select your foods.<br>
            <input type="checkbox" name="foods" id="pine">Pine<br>
            <input type="checkbox" name="foods" id="tuna">Tuna<br>
            <input type="checkbox" name="foods" id="bread">Bread<br>
            <input type="checkbox" name="foods" id="apple">Apple<br>
            <input type="checkbox" name="foods" id="oats">Oats<br><br>
            <button type="button" onclick="submit()">Submit</button>
        </form>                
    </div>
    <script>

    var pine = document.getElementById("pine");
    var tuna = document.getElementById("tuna");
    var bread = document.getElementById("bread");
    var apple = document.getElementById("apple");
    var oats = document.getElementById("oats");

    var foods = [pine,tuna,bread,apple,oats];

    function submit()
    {

        var collection = "";
        for (i=0;i<foods.length;i++)
        {
            if (foods[i].checked)
            {
                collection += foods[i].id + " ";
            }
        }

        document.cookie = collection;
        alert(document.cookie);

    }


    </script>
</body>

非常感谢你们!

2 个答案:

答案 0 :(得分:1)

那是因为submit是JavaScript中的保留字。使用其他函数名称,例如submitItem()。另请注意,默认情况下,按钮可以提交表单,其中似乎不是您的意图。我建议将它放在表单之外或防止它的默认行为。

答案 1 :(得分:1)

submit()是一个依赖于实现的保留字,不应该用作函数名http://www.javascripter.net/faq/reserved.htmhttp://www.w3schools.com/js/js_reserved.asp)。只需更改功能名称即可。

请检查此plunkr