2012-07-14 54 views
0

我有这个片段。因此,我看到一个错误:分配中的左侧无效。jQuery循环与数组错误

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

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

这是一个UPDATE 我需要一个变量“文本”将有编号的循环:文本1,文本2,文字3 ...我做了这样的:

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

但我出现错误:意外的标识符。问题就在这里:VAR文字+指数

+4

你不能指定'this'。你想做什么? – 2012-07-14 10:22:09

+0

'this ='应该是什么意思? – Trufa 2012-07-14 10:23:41

+0

你想做什么?修改数组的每个条目? – odupont 2012-07-14 10:23:50

回答

0

把一个+你的变量名后,语法错误在你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)是毫无意义的。 编辑:从你的评论看来,你似乎不想处理循环内的值,你想存储这些值供以后使用。你提到想要text1,text2等,但是如果你需要分别引用它们,听起来你的各种textareas并不是一个真正的组,并且根本没有必要在循环中处理它们。但是,如果你坚持,那么你应该将值存储在一个数组:

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阵列。

+0

感谢您的帮助和解释,但我仍然有问题。变量:text1,text2,text3 ...我拉低了代码。所以现在我得到如下错误:text1未定义。我想使用循环而不是为每个textarea写这个:var text1 = $(“#sc-dialog .text1”)。val(); var text2 = $(“#sc-dialog .text2”)。val(); \t \t var text3 = $(“#sc-dialog .text3”)。val();' – Vasili 2012-07-14 12:37:45

+0

如果您打算分别引用这些值,那么使用循环是没有意义的。这些textareas是用于不相关的目的吗?在任何情况下,我已经更新了我的答案,以显示用数组完成此操作的一种方法。 – nnnnnn 2012-07-15 00:20:01

+0

这工作完美。非常感谢您的帮助。 – Vasili 2012-07-15 20:09:38

1

尝试这样的:

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

不能使用“这个”作为变量名。试着这么做:

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

嘿,请查看我的问题更新 – Vasili 2012-07-14 11:22:32