【问题标题】:jQuery loop with an array error带有数组错误的jQuery循环
【发布时间】:2012-07-15 08:18:53
【问题描述】:

我有这个sn-p。结果我看到一个错误:分配中的左侧无效。

var arr = [ "text1", "text2", "text3", "text4" ];
    jQuery.each(arr, function(index, value) {
        this = jQuery("#sc-dialog ."+value).val();
});

有没有人可以指点我如何解决这个问题? 谢谢。

这是一个更新 我需要那个变量'text'将在循环中包含数字:text1,text2,text3 ...我已经这样做了:

var arr = [ "1", "2", "3", "4" ];
jQuery.each(arr, function(index, value) {
        var text + index = jQuery("#sc-dialog .text"+value).val();
});

但我收到一个错误:意外的标识符。问题出在这里:var text + index

【问题讨论】:

  • 您不能分配给this。你想做什么?
  • this = 应该是什么意思?
  • 你想做什么?修改数组的每一项?
  • 我正在尝试获取从 textarea 元素传递的每个数组项的内容。

标签: javascript jquery arrays loops


【解决方案1】:

试试这样:

jQuery.each(arr, function(index, value) {
    arr[index] = jQuery("#sc-dialog ."+value).val();
});

【讨论】:

    【解决方案2】:

    在你的变量名后面加上一个+ 是你的var 语句中的语法错误:

    var text + index = jQuery("#sc-dialog .text"+value).val()
    

    一个有效的变量声明将是变量名本身:

    var text;
    

    或者带有赋值的变量名:

    var text = jQuery("#sc-dialog .text"+value).val();
    

    被分配的值可以包含+ 或其他运算符:

    var x = y + z - 5 * (a + b);
    

    并且在单个var 语句中,您可以通过用逗号分隔多个变量来声明带有或不带有值的变量:

    var i, j = 0, k, text = jQuery("#sc-dialog .text"+value).val(), x = 12 + 4;
    

    如果您可以使用标准for 循环实现相同的目标,那么遵循简单模式的数字数组(在本例中为数组元素索引加 1)是毫无意义的。 编辑:从您的评论来看,您似乎不想处理循环中的值,您想存储这些值以供以后使用。您提到想要text1text2 等,但是如果您需要单独引用它们,听起来您的各种文本区域并不是一个真正的组,并且在循环中处理它们根本没有意义。但是如果你坚持,那么你应该将值存储在一个数组中:

    var i,
        text = [];
    for (i = 1; i <=4; i++) {
        text[i] = jQuery("#sc-dialog .text"+i).val();
    }
    // later in your code
    // text[1] is first value,
    // text[2] is second value, etc
    

    请注意,JS 数组索引是从零开始的,数组 .length 比最高索引多一,但您的字段编号从 1 开始 - 如果您稍后循环遍历 text 数组,请记住这一点。

    【讨论】:

    • 感谢您的帮助和解释,但我仍然有问题。变量:text1、text2、text3...我在代码中拉低了。所以现在我得到了这样的错误: text1 没有定义。我想使用循环而不是为每个文本区域编写这个:var text1 = $("#sc-dialog .text1").val(); var text2 = $("#sc-dialog .text2").val(); var text3 = $("#sc-dialog .text3").val();
    • 如果您打算单独引用这些值,那么使用循环是没有意义的。这些文本区域是否用于不相关的目的?无论如何,我已经更新了我的答案,以展示一种使用数组执行此操作的方法。
    【解决方案3】:

    您不能使用“this”作为变量名。尝试类似:

    var arr = [ "text1", "text2", "text3", "text4" ];
        jQuery.each(arr, function(index, value) {
            var dialogValue = jQuery("#sc-dialog ."+value).val();
    });
    

    【讨论】:

      猜你喜欢
      • 2011-03-03
      • 2014-09-12
      • 2018-12-28
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      • 2017-10-30
      • 2015-09-08
      相关资源
      最近更新 更多