【问题标题】:Javascript - Get checkbox values from a form and get a random resultJavascript - 从表单中获取复选框值并获得随机结果
【发布时间】:2015-01-20 14:55:53
【问题描述】:

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

一方面我有表格:

<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"]

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

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

你对我有什么建议吗?

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

【问题讨论】:

    标签: javascript forms checkbox random


    【解决方案1】:

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

    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]);
        }
    }
    

    【讨论】:

    • 非常感谢 todor.hr。我试图放置脚本,但是当我按下按钮时什么也没有显示。
    • 它只是打印到 JS 控制台。或者,如果您想查看 console.log()alert(allOptions[random]) 的值变化
    • 完美运行。谢谢!
    猜你喜欢
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    相关资源
    最近更新 更多