Javascript - 从表单中获取复选框值并获取随机结果

Javascript - Get checkbox values from a form and get a random result

本文关键字:获取 随机 结果 复选框 Javascript 表单      更新时间:2023-09-26

我有一个允许多个复选框的表单。我想在按下"生成"按钮时获得所有选中项目的随机值。

一方面,我有表格:

<FORM NAME="testform">
<INPUT CLASS="cities" TYPE="checkbox" NAME="mex" Value="mex"checked="checked">México<BR>
<p><INPUT CLASS="cities" TYPE="checkbox" NAME="ita" Value="ita">Italy<BR>
<p><INPUT CLASS="cities" TYPE="checkbox" NAME="usa" Value="usa">United State of America<BR>
<p><INPUT TYPE="button" NAME="button" Value="Generate" 
onClick="testButton"><BR>
</FORM>

但我是 JavaScript 的新手,我需要帮助来构建这个练习。

另一方面,我不知道如何获取表单值。这些是每个复选框的随机元素。

var mex=["mexico-df.html","veracruz.html","acapulco.html"]
var ita=["roma.html","milan.html","venecia.html"]
var usa=["los-angeles.html","new-york.html","washington.html"]

例如,我希望如果某些东西检查墨西哥和美国,结果应该只是上述变量中包含的随机值之间的一个随机值。

我不知道如何从表单中获取选中的值以及如何仅从所选项目中选择一个随机值。

你对我有什么建议吗?

对不起,如果我的英语不太好。

如果我正确理解你,你正在寻找这样的东西:

function testButton() {
    var mex=["mexico-df.html","veracruz.html","acapulco.html"];
    var ita=["roma.html","milan.html","venecia.html"];
    var usa=["los-angeles.html","new-york.html","washington.html"];
    var allOptions = [];
    var isMexChecked = document.getElementsByName("mex")[0].checked;
    if (isMexChecked) {
        allOptions = allOptions.concat(mex);
    }
    var isItaChecked = document.getElementsByName("ita")[0].checked;
    if (isItaChecked) {
        allOptions = allOptions.concat(ita);
    }
    var isUsaChecked = document.getElementsByName("usa")[0].checked;
    if (isUsaChecked) {
        allOptions = allOptions.concat(usa);
    }
    if (allOptions.length > 0) {
        var random = Math.floor((Math.random() * allOptions.length));
        console.log(allOptions[random]);
        return allOptions[random];
    }
}

只需确保以以下形式附加JS处理程序相关:

<INPUT TYPE="button" NAME="button" Value="Generate" 
onClick="testButton()">

稍后,如果您有更多国家/地区选项,您可能希望使内容更简洁:

var checkBoxNameToValuesMap = {
    "mex" : mex,
    "ita" : ita,
    "usa" : usa
};
for (var checkBoxName in checkBoxNameToValuesMap) {
    if (document.getElementsByName(checkBoxName)[0].checked) {
        allOptions = allOptions.concat(checkBoxNameToValuesMap[checkBoxName]);
    }
}