Javascript для цикла, чтобы изменить имя textareas в функции - PullRequest
1 голос
/ 04 июня 2011

Я создал 50 textareas с именами def1,def2,def3.....,def50. В моей функции onLoad() я хочу, чтобы во всех этих текстовых полях было установлено одинаковое значение.

Вместо того, чтобы писать код 50 раз, как я могу написать некоторый код Javascript для установки значения textarea, то есть в цикле?

Ответы [ 5 ]

2 голосов
/ 04 июня 2011

Предлагаю прочитать руководство по MDC JavaScript , так как циклы и конкатенация строк являются довольно простыми операциями:

for(var i = 1; i < 51; i++) {
    var nameOfTextarea = 'def' + i;
    // ...
}
1 голос
/ 04 июня 2011

Попробуйте jquery для этого:

<input type="text" id="t1"/>
<input type="text" id="t2"/>
<input type="text" id="t3"/>

Код Jquery:

var arr = [ "t1", "t2", "t3" ];
jQuery.each(arr, function() {
      $("#"+this).val("hello");//$("#" + this).text("hello");
   });

Вот рабочая демонстрация

1 голос
/ 04 июня 2011

Я бы дал ваши текстовые идентификаторы (а не только имена), если это возможно, и затем сделал бы что-то вроде следующего:

var namePrefix = "def";
for(var i = 1; i <= 50; ++i)
{
    var textbox = getElementById(namePrefix + i);
    // do something to textbox number i.
}
0 голосов
/ 17 мая 2012

Вы можете использовать свойство tagname, но оно не будет работать, если у вас есть еще текстовое поле где-либо еще на вашей странице

 function loader(){
    for(var i=0;i<50;i++)
    document.getElementsByName("def"+i)[0].value='Any Value';
    }
0 голосов
/ 04 июня 2011

Попробуйте это.

var textareas = document.getElementsByTagName("textarea");
for(var i=0;i<textareas.length;i++){
    if(textareas[i].id.indexOf("def") == 0){
        textareas[i].value = textareas[i].id;
    }
} 
...