Я хочу перебрать массив и изменить атрибуты - PullRequest
0 голосов
/ 09 марта 2011

Вот мой код

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

Почему это не работает?

Ответы [ 7 ]

4 голосов
/ 09 марта 2011

Ваша первая проблема - вызов split (',') для массива.Однако, если вы просто хотите установить значения всех этих значений в пустую строку, вы можете сделать:

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

Если вы хотите установить другие значения, вам нужно выполнить цикл:*

2 голосов
/ 09 марта 2011

Мне интересно, почему вы звоните:

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', '');
}
2 голосов
/ 09 марта 2011

У вас уже есть массив, разделять нечего, это работает только со строками. Вам также нужно будет передать идентификатор в jQuery, прежде чем вы сможете набрать attr. В этом случае val еще лучше.

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

Но короче будет использовать множественный селектор :

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

или, если у вас уже есть массив, создайте строку, join указав идентификаторы:

$(input_buttons.join(',')).val('');
1 голос
/ 09 марта 2011

ваш массив содержит только идентификатор, но не фактический объект попробуйте это

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

for(var i=0; i< input_buttons.length; i++) 
{
   $(input_buttons[i]).removeAttr('value');
}
1 голос
/ 09 марта 2011
var input_buttons = ["#one","#two","#three"]; 
$.each(input_buttons, function(idx, value) {
    $(value).val('');
});

Или даже лучше и короче:

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

Вы также можете дать этим элементам общее имя класса и затем использовать это:

$('.className').val('');
0 голосов
/ 09 марта 2011

input_buttons уже является массивом - не split это.

Чтобы использовать .attr, вам нужно, чтобы он был объектом jquery, поэтому вызовите $(input_buttons[i]).attr

0 голосов
/ 09 марта 2011

Попробуйте следующее, чтобы удалить атрибут:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...