document.getElementById().value 在 Firefox 中不工作

document.getElementById().value not working in Firefox

我知道这里有人问过类似的问题。但是,我的不同之处在于我想通过 Javascript 函数在元素中设置一个值。

类似问题的答案与我的问题不符,没有解决。

我有以下代码:

function getItems() {
                        var sixOrLower = ["1", "2", "3", "4", "5", "6"];
                        var higherThanSix = ["7", "8", "9", "10", "11", "12"];
                        var arr = ["one", "two", "three", "four", "five", "six"];
                        for(i=0; i<sixOrLower.length; i++){
                            document.getElementById(arr[i]).value = sixOrLower[i];
                        }

                        var arr2 = ["seven", "eight", "nine", "ten", "eleven", "twelve",];
                        for(j=0; j<higherThanSix.length; j++){
                            document.getElementById(arr2[j]).value = higherThanSix[j];
                        }
                        document.getElementById("f").submit();
                }

sixOrLower 和 higherThanSix 是由另一个没有其他用途的函数填充的数组。这很好用。

现在我有一个包含隐藏字段的表单,我想在其中存储上面代码中的值:

<form class="f" id="f" name="f" action="<? echo htmlspecialchars($_SERVER['PHP_SELF']);?>" enctype=
      "multipart/form-data" method="post">
                    <input type="hidden" name="one" id="one" value="">
                    <input type="hidden" name="two" id="two" value="">
                    <input type="hidden" name="three" id="three" value="">
                    <input type="hidden" name="four" id="four" value="">
                    <input type="hidden" name="five" id="five" value="">
                    <input type="hidden" name="six" id="six" value="">
                    <input type="hidden" name="seven" id="seven" value="">
                    <input type="hidden" name="eight" id="eight" value="">
                    <input type="hidden" name="nine" id="nine" value="">
                    <input type="hidden" name="ten" id="ten" value="">
                    <input type="hidden" name="eleven" id="eleven" value="">
                    <input type="hidden" name="twelve" id="twelve" value="">
                    <button id="but_order" onclick="getItems();">Do stuff</button>
</form>

提交表单后,我想在服务器端脚本中使用字段。但是,Firefox 中没有填写隐藏的输入字段。它在 Chrome 和 IE 中运行良好。所以问题是:我该如何为 Firefox 解决这个问题?

如果您将按钮标记更改为特定类型:'button',而不是让它默认 'submit' 按钮,这将解决您的问题。

<button id="but_order" type="button" onclick="getItems();">Do stuff</button>

您遇到的问题是表单中定义的唯一按钮默认为 'submit' 按钮,然后在调用 getItems() 函数之前提交表单。

这是一个示例解决方案:https://jsfiddle.net/nmiddleweek/8dpzkfqo/11/

干杯, 尼克