сделать таблицу.
Нужно сделать таблицу.
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:30. |