Запустите цикл for в переменной - PullRequest
2 голосов
/ 06 декабря 2011

Мне было интересно, возможно ли запустить цикл for внутри переменной? У меня есть переменная, определенная как var table = $('<table border="1"><tr></tr>'); Я хотел бы заполнить эту первую строку <th> s, сгенерированных из массива. Теоретически это будет выглядеть примерно так:

var table = $('<table border="1"><tr>'for (var i=0; i< headers.length; i++){$("<th>"+headers[i]+"</th>")}'</tr>');

Я попытался запустить цикл for как

for (var i=0; i< headers.length; i++) {
    $("<th>"+headers[i]+"</th>").appendTo(table);
}

вне объявления переменной, но из-за других частей программы использование .appendTo не является жизнеспособным решением.

Ответы [ 2 ]

2 голосов
/ 06 декабря 2011

Если вы действительно не можете сделать это вне объявления переменной (что я не понимаю, почему вы не можете), как насчет чего-то вроде этого:

var headersString = '';  

for (var i=0; i < headers.length; i++) {  
    headersString += '<th>'+ headers[i] +'</th>';  
}  

('<table border="1"><tr>' + headersString + '</tr></table>');

Рабочий пример здесь: http://jsfiddle.net/hEKy5/

1 голос
/ 06 декабря 2011

Не совсем, но как насчет этого

var row = $('table tr:first'); 
    for (var i=0; i < headers.length; i++)
       $("<th />").html(headers[i]).appendTo(row);

РЕДАКТИРОВАТЬ

Я не осознавал, что прикрепление элементов к dom вызывает переформатирование страницы.Этот код устранит эту проблему

var row = $('table tr:first').detach();
for (var i = 0; i < headers.length; i++)
    $("<th />").html(headers[i]).appendTo(row);
$("table").prepend(row);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...