2011-03-09 54 views
0

这里是我的代码我想遍历数组,并修改属性

var input_buttons = ["#one","#two","#three"]; 
var substr = input_buttons.split(','); 
for(var i=0; i< substr.length; i++) 
{ 
    substr.attr('value', ''); 
} 

为什么不工作的呢?

+0

你需要告诉我们什么你的代码应该这样做,因为这根本没有任何意义。 'input_buttons'是一个数组,数组没有'split'方法。字符串有一个'split'方法返回一个数组,而数组也没有'attr'方法。 – RoToRa 2011-03-09 15:18:31

回答

2

你已经有了一个数组,没有什么可以拆分的,这只适用于字符串。您还必须将ID传递给jQuery,然后才能打开attr。在这种情况下,val甚至更​​好。

var input_buttons = ["#one","#two","#three"]; 
for(var i=input_buttons.length; i--;) { 
    $(input_buttons[i]).val(''); 
} 

但短会使用multiple selector

$('#one, #two, #three').val(''); 

,或者如果你已经有数组,创建一个字符串由荷兰国际集团join的ID:

$(input_buttons.join(',')).val(''); 
0

请尝试以下方法删除属性:

var input_buttons = ["#one","#two","#three"]; 
for(var i=0; i< input_buttons.length; i++) 
{ 
    $(input_buttons[i]).removeAttr('value'); 
} 

的原因,你的代码不工作时在jQuery的功能超载。 .attr('value', '')的计算结果为.attr('value'),它返回值value而不是设置它。原因是''评估为false

+0

谢谢,从来不知道removeAttr,但我的问题与您的代码一致。这不是substr.removeAttr('value');或substr.attr('value','');我觉得但可能是一个语法错误? – 2011-03-09 15:16:35

+0

-1不捕获数组上的分割,并缺乏jquery – Mikhail 2011-03-09 15:17:30

+0

substr不是jQuery对象。需要初始化 – Mikhail 2011-03-09 15:18:57

4

你的第一个问题是在数组上调用split(',')。但是,如果你只是想将所有那些为空字符串的值,你可以这样做:

$('#one,#two,#three').val(''); 

如果你想设置你需要遍历不同的值:

$('#one,#two,#three').each(function() { 
    // this == the HTML node (not a jQuery element) 
    this.value = someValue; // someValue would set outside 
}; 
2

我想知道为什么你打电话:

var substr = input_buttons.split(','); 

由于你的input_buttons的性质,你已经有了一个数组。所有你应该做的是:

var input_buttons = ["#one","#two","#three"]; 
for(var i=0; i< substr.length; i++) 
{ 
    $(input_buttons[i]).attr('value', ''); 
} 
+0

字符串没有'attr'方法。 – RoToRa 2011-03-09 15:19:18

+0

@RoToRa - Doh。我总是犯这个愚蠢的错误。谢谢你的纠正。固定。 – JasCav 2011-03-09 15:21:59

1
var input_buttons = ["#one","#two","#three"]; 
$.each(input_buttons, function(idx, value) { 
    $(value).val(''); 
}); 

甚至更​​好和更短:

$('#one, #two, #three').val(''); 

你也可以给这些元素共同的类名,然后使用此:

$('.className').val(''); 
0

input_buttons已经是一个数组 - 不要split它。

要使用.attr你需要的是一个jQuery对象,所以叫$(input_buttons[i]).attr

1

您的阵列只包含ID而不是实际的对象 试试这个

var input_buttons = ["#one","#two","#three"]; 

for(var i=0; i< input_buttons.length; i++) 
{ 
    $(input_buttons[i]).removeAttr('value'); 
}