Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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变量放入数组并执行foreach循环_Javascript_Arrays_Loops_Jquery - Fatal编程技术网

将javascript变量放入数组并执行foreach循环

将javascript变量放入数组并执行foreach循环,javascript,arrays,loops,jquery,Javascript,Arrays,Loops,Jquery,我在javascript中分配了很多变量,我希望将这些变量存储到数组中,并像javascript中的foreach一样执行循环。我该怎么做 var name=document.forms["form"]["name"].value; var email=document.forms["form"]["email"].value; var mobile=document.forms["form"]["mobile"].value; var q1=document.forms

我在javascript中分配了很多变量,我希望将这些变量存储到数组中,并像javascript中的foreach一样执行循环。我该怎么做

var name=document.forms["form"]["name"].value;
    var email=document.forms["form"]["email"].value;
    var mobile=document.forms["form"]["mobile"].value;
    var q1=document.forms["form"]["q1"].value;
    var q2=document.forms["form"]["q2"].value;
    var q3=document.forms["form"]["q3"].value;
    var l1=document.forms["form"]["logo1"].value;
    var l2=document.forms["form"]["logo2"].value;
    var l3=document.forms["form"]["logo3"].value;
    var p1=document.forms["form"]["photo1"].value;
    var p2=document.forms["form"]["photo2"].value;
    var p3=document.forms["form"]["photo3"].value;

    if ( name == "" ) {
        alert("Please fill up all field to submit!");
        $('#name_error').css({'display': 'block'});
        return false;
    } else if ( email == "" ) {
        alert("Please fill up all field to submit!");
        $('#email_error').css({'display': 'block'});
        return false;
    }
var a=1;
var all=新数组();

对于(i=0;i我创建了一个小提琴来演示如何操作:

HTML:

<form name="form">
    <input type="text" name="name"/>
    <input type="text" name="email"/>
    <input type="text" name="mobile"/>
</form>
for (var i = 0; i < document.forms["form"].length;i++) {
    if (document.forms["form"][i].value == "")
        alert(document.forms["form"][i].name + " is empty!");
}

JS:

<form name="form">
    <input type="text" name="name"/>
    <input type="text" name="email"/>
    <input type="text" name="mobile"/>
</form>
for (var i = 0; i < document.forms["form"].length;i++) {
    if (document.forms["form"][i].value == "")
        alert(document.forms["form"][i].name + " is empty!");
}
for(var i=0;i

基本上,您可以单步遍历所有元素并查询它们是否为空。

这可能会满足您的需要

var array = [];
array.push({ name: "name", value: document.forms["form"]["name"].value});
array.push({ name: "email", value: document.forms["form"]["email"].value});
array.push({ name: "mobile", value: document.forms["form"]["mobile"].value});
// add other values here ...

array.forEach(function (obj) {
    if (obj.value == "") {
        alert("Please fill up all field to submit!");
        $("#" + obj.name + "_error").css({ "display": "block" });
        return false;
    }
});
不幸的是,除了在数组中存储元素的值之外,我们还需要存储元素的名称,这样我们就可以为它访问正确的错误元素

您可以查看一下以进行验证

编辑:

编辑2: 根据雷内的评论: 如果函数返回false,则不应该有submit。 希望这次我一切都好;)


这将创建一个可以循环的对象

var values = {
    name: document.forms["form"]["name"].value,
    email: document.forms["form"]["email"].value,
    mobile: document.forms["form"]["mobile"].value,
    q1: document.forms["form"]["q1"].value,
    q2: document.forms["form"]["q2"].value,
    q3: document.forms["form"]["q3"].value,
    l1: document.forms["form"]["logo1"].value,
    l2: document.forms["form"]["logo2"].value,
    l3: document.forms["form"]["logo3"].value,
    p1: document.forms["form"]["photo1"].value,
    p2: document.forms["form"]["photo2"].value,
    p3: document.forms["form"]["photo3"].value
};

for ( var item in values ) {
    console.log( item + ': ' + values[ item ];
    // do something
}

if ( values.email === '' ) {
    // conditional use here
}

你应该使用jquery的验证插件,因为你已经在使用jquery了。对不起,我不明白你的意思你是我的阳光(你不是我的阳光:P)。。你没有得到什么部分?嗨,这段代码几乎就在那里了,但是$(“#”+name+“_error”).css({“display”:“block”});在不显示错误消息的位置不工作。其他的工作很好!谢谢,我想我找到我的错误了。我将“name”改为“obj.name”。您好,谢谢,但我发现,在它返回后,我确实显示了我的错误消息,但它刷新了,您能看到我的代码中有什么错误吗?请刷新页面?我现在也在检查…我可以看一下,但我想我需要你的整个功能。您可能会在单击一个按钮后进行验证,然后发送一个post?您必须将false存储在变量中并返回该变量。
返回false数组使用。forEach
var values = {
    name: document.forms["form"]["name"].value,
    email: document.forms["form"]["email"].value,
    mobile: document.forms["form"]["mobile"].value,
    q1: document.forms["form"]["q1"].value,
    q2: document.forms["form"]["q2"].value,
    q3: document.forms["form"]["q3"].value,
    l1: document.forms["form"]["logo1"].value,
    l2: document.forms["form"]["logo2"].value,
    l3: document.forms["form"]["logo3"].value,
    p1: document.forms["form"]["photo1"].value,
    p2: document.forms["form"]["photo2"].value,
    p3: document.forms["form"]["photo3"].value
};

for ( var item in values ) {
    console.log( item + ': ' + values[ item ];
    // do something
}

if ( values.email === '' ) {
    // conditional use here
}