我想遍历一个数组并修改属性

时间:2011-03-09 15:12:29

标签: javascript jquery arrays loops

这是我的代码

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

为什么这不起作用?

7 个答案:

答案 0 :(得分: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
};

答案 1 :(得分:2)

你已经有了一个数组,没有什么可以拆分,这只适用于字符串。在调用attr之前,您还必须将ID传递给jQuery。在这种情况下,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('');

答案 2 :(得分: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', '');
}

答案 3 :(得分:1)

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

甚至更好更短:

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

你也可以给这些元素一个公共的类名,然后使用它:

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

答案 4 :(得分:1)

你的数组只包含id但不包含实际的对象 试试这个

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

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

答案 5 :(得分: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

答案 6 :(得分:0)

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

要使用.attr,您需要将其作为jquery对象,因此请调用$(input_buttons[i]).attr