繁体   English   中英

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

[英]put javascript variable into array and do foreach loop

我在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 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;
    }
});

不幸的是,我们除了将元素的值存储在数组中之外,还需要存储元素的名称,因此我们可以为其访问正确的错误元素。

您可以查看http://jqueryvalidation.org/进行验证

编辑:

// I think we only need the element names and then get the value in the loop
var array = [];
array.push("name");
array.push("email");
array.push("mobile");
// add other values here ...

array.forEach(function (name) {
    if (document.forms["form"][name].value == "") {
        alert("Please fill up all field to submit!");
        $("#" + name + "_error").css({ "display": "block" });
        return false;
    }
});

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

$("#form").on("click", "#submitbutton", function(e) {
    e.preventDefault();
    var submit = true,
        array = [];

    array.push("name");
    array.push("email");
    array.push("mobile");
    // add other values here ...

    array.forEach(function (name) {
        if (document.forms["form"][name].value == "") {
           alert("Please fill up all field to submit!");
            $("#" + name + "_error").css({ "display": "block" });
            submit = false;
            return false;
        }
    });
    return submit;
});

我创建了一个小提琴来向您展示如何操作: http : //jsfiddle.net/markus_b/rtRV3/

HTML:

<form name="form">
    <input type="text" name="name"/>
    <input type="text" name="email"/>
    <input type="text" name="mobile"/>
</form>

JS:

for (var i = 0; i < document.forms["form"].length;i++) {
    if (document.forms["form"][i].value == "")
        alert(document.forms["form"][i].name + " is empty!");
}

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

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

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
}
var a = 1;
var all = new Array();
for(i=0;i<4;i++)
{
all[i]=a;
a++;
}

将4替换为字段数,将a替换为document.get。同样,您可以访问它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM