Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在一个数组中保存多个下拉选项_Javascript_Php_Laravel - Fatal编程技术网

Javascript 在一个数组中保存多个下拉选项

Javascript 在一个数组中保存多个下拉选项,javascript,php,laravel,Javascript,Php,Laravel,我从一个数据库生成问题,用户将在下拉菜单中选择答案。当用户选择某个选项时,一个建议将被推送到触发JavaScript更改事件的数组中。当用户完成所有问题后,我将把数组作为一行从存储所有建议的表单发送到数据库 当我尝试发送建议时。建议第一次被推送。但是当用户更改答案时,数组会再次被推送,并显示重复消息 var suggestions=[]; function sendSuggestion() { if (document.getElementById("1").v

我从一个数据库生成问题,用户将在下拉菜单中选择答案。当用户选择某个选项时,一个建议将被推送到触发JavaScript更改事件的数组中。当用户完成所有问题后,我将把数组作为一行从存储所有建议的表单发送到数据库

当我尝试发送建议时。建议第一次被推送。但是当用户更改答案时,数组会再次被推送,并显示重复消息

    var suggestions=[];

    function sendSuggestion() {
        if (document.getElementById("1").value == "no" && document.getElementById("2").value == "no"  ){
            suggestions.push("you need to study more");


        }


    }
</script>    

当用户选择id为1和2的“无问题”时,我希望您的输出需要进一步研究。

如果您不需要存储多个建议,可以在每次函数调用时将数组设置为空

var suggestions=[];

function sendSuggestion() {
    // here will work
    suggestions = [];
    if (document.getElementById("1").value == "no" && document.getElementById("2").value == "no") {
        // or if you only want to set to empty if the conditional passes you can do it here
        suggestions = [];
        suggestions.push("you need to study more");
     }
}
如果需要或希望填充数组,可以检查特定项。您将运行以下命令,而不是在条件中重新初始化数组

let index = suggestions.indexOf("you need to study more");
// negative one is returned if the item is not found
// if it's found we'll remove it from the array
if (index > -1) suggestions.splice(index, 1);
文件//

阵列拼接-

Array.indexOf-

使用以下内容更新javascript函数:

    function sendSuggestion() {
    if (document.getElementById("1").value == "no" && document.getElementById("2").value == "no"  ){
        if (suggestions.indexOf("you need to study more") == -1){
            suggestions.push("you need to study more");
        }
    }

    if (document.getElementById("1").value == "yes" && document.getElementById("2").value == "yes"  ){
        var index = suggestions.indexOf("you need to study more");

        if (index > -1) {
           suggestions.splice(index, 1);
        }
    }
}

这将允许您的数组中有不同的建议,没有重复项。

在sendSuggestion中测试答案之前,您需要清除建议,添加建议=[];之前,请使用对而不是普通数组。这样,您可以轻松访问以前添加的答案并将其替换为新的答案。如果用户将两者都还原为“是”,会删除消息吗?在这种情况下,您需要在同一函数中写下单独的“如果”条件以删除此消息元素。更新了我的答案。
    function sendSuggestion() {
    if (document.getElementById("1").value == "no" && document.getElementById("2").value == "no"  ){
        if (suggestions.indexOf("you need to study more") == -1){
            suggestions.push("you need to study more");
        }
    }

    if (document.getElementById("1").value == "yes" && document.getElementById("2").value == "yes"  ){
        var index = suggestions.indexOf("you need to study more");

        if (index > -1) {
           suggestions.splice(index, 1);
        }
    }
}