1

在我的项目中,我有 20-30 个分配给变量的用户输入值。每个输入都有一个我试图以智能方式构建的 id。但是我是编码新手,所以我一直在按顺序写出每个变量赋值。这不是一个很好的方法,但我不确定如何构建一个 for 循环来满足要求。

我的变量的结构如下:

    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,因为这些是相关输入字段的一部分。

现在为什么会这样?最终用户浏览每个字段,更改选项或输入文本以满足他们的需要,最终结果是使用 vars 生成的文本。有点像一个疯狂的库生成器。

4

1 回答 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 索引

方法二

或者,您可以使变量窗口属性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();您对当前系统的期望

于 2013-09-07T03:59:11.137 回答