分配变量的更好方法?

时间:2013-09-07 02:13:22

标签: jquery variables for-loop

在我的项目中,我有20-30个用户输入值分配给变量。每个输入都有一个我试图以智能方式构建的id。但我是编码的新手,所以我一直在按顺序写出每个变量赋值。这不是一个简洁的方法,但我不知道如何构建for循环以适应账单。

我的vars结构如下:

    var box_1 = $("#box1").val();
    var box_1_2 = $("#box1_2").val();
    var box_2 = $("#box2").val();
    var box_2_2 = $("#box2_2").val();
    var box_3 = $("#box3").val();
    var box_4 = $("#box4").val();
    var box_4_2 = $("#box4_2").val();
    var box_5 = $("#box5").val();
    var box_5_2 = $("#box5_2").val();
    var box_6 = $("#box6").val();
    var box_7 = $("#box7").val();
    var box_8 = $("#box8").val();
    var box_9 = $("#box9").val();
    var box_9_2 = $("#box9_2").val();
    var box_9_3 = $("#box9_3").val();
    var box_9_4 = $("#box9_4").val();
    etc...

非常感谢任何帮助!

编辑处理一些评论

回答评论中的问题: id随机命名为boxn和变量box_n,以便于书写 ID指的是选择框,输入字段和单选按钮的混合 每个box_n始终分配给boxn 一些boxn将跟随boxn_a,boxn_b,boxn_c,因为它们是相关输入字段的一部分。

现在为什么这样?最终用户移动每个字段,更改选项或输入文本以满足其需要,最终结果是使用变量生成的文本。有点像疯狂的lib生成器。

1 个答案:

答案 0 :(得分:1)

方法1

您可以使用多维数组Example Fiddle

var box_counts = [2, 2, 1, 2, 2, 1, 1, 1, 4];
var box_vars = [];

for (var i = 0; i < box_counts.length; i++) {
    box_vars[i] = [];
    box_vars[i][0] = $('#box' + (i + 1)).val();
    for (var j = 1; j < box_counts[i]; j++) {
        box_vars[i][j] = $('#box' + (i + 1) + '_' + (j + 1)).val();
    }
}

使用示例:box_vars[0][1]表示当前box_1_2变量的值,box_vars[8][3]表示您的box_9_4变量。请注意,由于在使用1个索引名称时数组为0索引,因此您必须执行一些心算运算或将结构更改为具有空0索引

方法2

或者,您可以使变量窗口属性Example Fiddle

$('[id^=box]').each(function(){
    window[this.id.replace('box', 'box_')] = $(this).val()
})

这将允许您现在就打电话给他们。然而,它们将是全球性的。

使用示例:box_1_2将引用$("#box1_2").val();box_9_4将引用$("#box9_4").val();,就像您对当前系统所期望的那样