簡體   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