сделать таблицу.
Нужно сделать таблицу.
function rew(k,m){ var pov=[]; for (i=0;i<c.length; i++) { if(((u[k][0]==c[i][0]&&u[m][0]==c[i][2])||(u[k][0]==c[i][2]&&u[m][0]==c[i][0]))==!null){ pov.push(c[i]); } } for (i=0;i<pov.length; i++) { document.write(pov[i]); }} for (k=0;k<u.length; k++){ for (m=0;m<u.length; m++){ rew(k,m); document.write(':'); } document.write('<br>'); } ":"-Это столбцы Попытка решить самому: document.write("<table border=1>"); for (k = 0; k < u.length; k++) { document.write("<tr>"); for (m = 0; m < u.length; m++) { document.write("<td>"+rew(k,m)+"</td>") } document.write("</tr>") } document.write("</table>"); |
Цитата:
затем выводите всё единственным document.write |
Цитата:
|
var strTabl="<table border=1><tbody>\n"; for (k = 0; k < 4; k++) { strTabl+= "\n<tr>\n"; for (m = 0; m < 5; m++) { strTabl+= "<td>"+"строка " +k+"; яч "+m+"</td>"; } strTabl+= "\n</tr>\n"; } strTabl+= "\n</tbody></table>"; alert(strTabl); |
Deff-спасибо.
|
Переделал таблицу,а что ставить между тегами <td> и </td>?
var strTabl="<table border=1><tbody>\n"; for (k = 0; k < u.length; k++) { strTabl+= "\n<tr>\n"; for (m = 0; m < u.length; m++) { strTabl+= "<td>"+...........+"</td>"; } strTabl+= "\n</tr>\n"; } strTabl+= "\n</tbody></table>"; document.write (strTabl); |
Цитата:
Я больше предпочитаю dom-методы: <!DOCTYPE html> <body> <script> var table, row, data; table = document.createElement('table'); table.border = 1; for (var k = 0; k < 4; k++) { row = document.createElement('tr'); for (var m = 0; m < 5; m++) { data = document.createElement('td'); data.innerHTML = "строка " +k+"; яч "+m; row.appendChild(data); } table.appendChild(row); } document.body.appendChild(table); </script> </body> Доктайп не должен быть XHTML, иначе в IE7 будут проблемы (без tbody) |
danik.js,
Coздал всю внутренность таблицы - сунул в созданный тег табле через appendChild, и всё вместе вставил в DOM, это и есть рекомендованный способ при создании многоэлементного узла! document.createElement('td'); для каждого подэлемента это и есть не Айс, - при создании DOM объекта куча времени. |
Deff, я с этим и не спорю. Вот только в данном случае абсолютно без разницы какой способ выбрать. Я предпочел dom-методы, для повышения читабельности.
Вопрос к тебе касался Цитата:
Цитата:
|
danik.js,
Cтранный Цитата:
Вы можете иногда и ошибаться. Цитата:
Доступа к движку нет, доктайп - не сменить Есть нюансы неправильной работы DOM c таблами, при отсутствии явного tbody, да и юзер не помня о нём из tr часто пытается считать parent(ом) табле |
Чем плох этот способ?
var i, j; document.write("<table border=1>"); for (i = 0; i < c.length; i++) { document.write("<tr>"); for (j = 0; j < c[i].length-1; j++) { document.write("<td>" + c[i][j] + "</td>") } document.write("</tr>") } document.write("</table>"); А можно помочь?У меня функция получается внутри циклов.Или как-то по другому нужно делать? |
Цитата:
|
Цитата:
Тоесть в итоге в документе не та разметка, которую вы пишете, а воссозданная по dom-модели, которая создана при парсинге вашей разметки. |
danik.js,
это очепятка ночная - поправил. *Наезд всегда вызывает отторжение и противостояние. Даже не всматривался в Ваше написанное, - ток реакция на "бред" |
dima***,
Поправил Пост 4 |
Я тоже подправил.Но вопрос остался -как вставить функцию???
Хотя бы где подсмотреть.Весь интернет облазил,ничего похожего не нашёл.:( |
В функции rem сделать тоже самое - завести строковую переменную, и вместо document.write засовывать все в эту строку. В конце вернуть строку: return str;
|
Цитата:
|
danik.js-спасибо!получилось!!!
Цитата:
Просто про таблицы мало где написано.И сделаны они в таком виде,в каком я написал. |
Цитата:
|
Вопрос "вдогонку" .Как заменить undefined в таблице на ""?
|
Какой еще undefined?
|
В пустых ячейках выходит undefined.А хотелось бы пустую ячейку
|
function правильная (){ var str; alert(str); } function неправильная (){ var str = ''; alert(str); } правильная(); неправильная(); Внимание! Имена функций даны на кириллице только в учебных целях. Не повторять - опасно для жизни! |
А можно прописать в таблице,а не в функции?
|
что прописать? dima***, хватит сопли жевать уже, давай код сюда если не можешь разобраться сам.
|
danik.js-спасибо!
вроде понятно.Попробую сам разобраться. |
Что-то,не получается...В пустых ячейках выходит undefined.А хотелось бы пустую ячейку
function rew(k,m){ var pov=[]; for (i=0;i<c.length; i++) { if(((u[k][0]==c[i][0]&&u[m][0]==c[i][2])||(u[k][0]==c[i][2]&&u[m][0]==c[i][0]))==!null){ pov.push(c[i]); } } for (i=0;i<pov.length; i++) { return pov; }} |
Цитата:
Давай целиком код, тут пока не видно undefined |
Цитата:
Вобще, лучше бы я этого не видел...:( функция rew в случае когда pow нулевой длины - не возвращает ничего, в итоге получаем undefined. |
убрал,чтобы не смущало.
|
а как сделать чтобы row был не нулевой длины?
|
Зачем?
|
Цитата:
|
Бери выше - я уже два раза сказал про return внутри for{}
|
danik.js-спасибо огромное!Всё получилось в лучшем виде.:thanks:
Ещё вопрос.Как и где прописать -если k==m,то цвет ячейки красный. <!DOCTYPE html> <body> <script> var table, row, data; table = document.createElement('table'); table.border = 1; for (var k = 0; k < 4; k++) { row = document.createElement('tr'); for (var m = 0; m < 5; m++) { data = document.createElement('td'); data.innerHTML = "строка " +k+"; яч "+m; row.appendChild(data); } table.appendChild(row); } document.body.appendChild(table); </script> </body> |
Кстати Deff прав (я с этим и не спорил) что через dom-методы таблица создается на порядок медленней. Я сделал тест, можно сравнить. Тем не менее, не во всех случаях dom-методы оказываются медленней (по крайней мере в современных браузерах), например можно поглядеть этот тест.
В любом случае глупо биться за доли милисекунд (и даже за милисекунды), когда этого совершенно не требуется. Алерт выведет время генерации таблицы в милисекундах. <!DOCTYPE html> <body> <script> var table, row, data; /* delete */var tstart = new Date(); table = document.createElement('table'); table.border = 1; for (var k = 0; k < 4; k++) { row = document.createElement('tr'); for (var m = 0; m < 5; m++) { data = document.createElement('td'); data.innerHTML = "строка " +k+"; яч "+m; if (k == m) { data.style.backgroundColor = 'red'; //data.style.borderColor = 'red'; //data.style.color = 'red'; } row.appendChild(data); } table.appendChild(row); } document.body.appendChild(table); /* delete */alert(new Date() - tstart); </script> </body> |
danik.js-спасибо!А,что получается, что самый быстрый для таблиц получается IE9?Если таблиц на сайте 1000 штук будет,всё-таки что лучше использовать.
А в таблице у Deffа как будет не подскажешь? Что-то вроде,if(k==m){'<td.style.backgroundColor= "red">' } или где подсмотреть... var strTabl="<table border=1><tbody>\n"; for (k = 0; k < 4; k++) { strTabl+= "\n<tr>\n"; for (m = 0; m < 5; m++) { strTabl+= "<td + (k == m ? " style=color:red" : "") >"+"строка " +k+"; яч "+m+"</td>"; } strTabl+= "\n</tr>\n"; } strTabl+= "\n</tbody></table>"; document.write(strTabl); |
strTabl+= "<td" + (k == m ? " style=color:red" : "") +">"+"строка " +k+"; яч "+m+"</td>"; Если все 1000 штук будут генерироваться за один раз, то лучше innerHTML |
спасибо!
А если штук 5-10 на страницу? |
Часовой пояс GMT +3, время: 13:05. |