|
|
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
Господа, вопрос: есть таблица... Как в нее с помощью javascript'a врисовать еще один ряд? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2008, 18:56 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
Можно и проще (cloneNode и appendChild). Только хотелось бы знать всякие подробности... . Почитай, что Ex_Soft тынцы даёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2008, 21:04 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
добавляем ряд в таблицу с помощью javascript: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2008, 09:19 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
Или так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2008, 23:07 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
ШогалИли так: Код: plaintext 1. 2. примеры давать - это не всегда просто скопипастить. Касательно Вашего примера - 1.tablebd - хз что (хотя я конечно догадываюсь), 2. строки по умолчанию заносятся в tbody, а для работы с thead и tfoot нужно именно к ним обращаться, 3. tablebd.rows.length - зачем лишние буквы и вычисления, если можно написать insertRow(-1). Ну и если вы с ячейкой ничего больше делать не собираетесь, кроме как добавить и вписать innerHTML, то необязательно создавать под нее переменную: row.insertCell(-1).innerHTML = 'bla-bla-bla'. Вот и получается, что, с одной строны - все понятно, а с другой - опять возникнут ненужные вопросы. P.S. вообще-то давно уже пора это вынести куда-нить в faq. У меня даже было желание его оформить, только вот раздела html и js в местном факе не оказалось (обидно, в кои-то веки захотелось че-нить полезное сделать). Подалась было к модератору за помощью, но он молчит как партизан. Конечно надо было к джуджу сходить или на ОНС, но уже не горю желанием писательства. "Прошла любовь, завяли помидоры..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2008, 01:01 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
illioninsertRow(-1) Спасибо, не знал. DOM изучал по w3schools, там про -1 почему-то ни слова ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2008, 04:20 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
Еще интересный момент, относящийся к оптимизации процесса добавления строк/ячеек: если динамически добавляется строка, затем ячейки, то следует помнить, что меняя любой стиль или наполнение ячейки, мы заново обращаемся к контенту страницы - с каждым "входом" в ячейку. Чтоми минимизировать затраты на добавление строк/ячеек, лучше идти с конца: создавать ячейку, наполнять ее стилями и содержимым и затем добавлять к созданной строке, и когда строка "заполнена", добавлять к таблице. Для задания в данном топике это уточнение, возможно, не актуально, но при динамическом выводе большого количества строк и тем более ячеек данное замечание более чем действенное. Базируясь на данных, рассмотренных в книге "AJAX в действии", можно утверждать, что скорость вывода полной таблицы увеличится в 1.6-2 раза и может быть еще больше, если ячейки наполняются большим количеством стилей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2008, 05:03 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
IDVsbruck звучит вполне логично, хотя насчет 1,6-2 раза могу посомневаться. А нет данных, базирующихся на собственном опыте и экспериментах, а не на некоей книге? Мне лишь однажды не повезло иметь дело с огромными таблицами, которые зачем-то нужно было обязательно выводить целиком на экран (последствия многолетнего сиденья в экселе). Есть на quirksmode такие данные . Я в своих попытках прошла примерно ту же дорожку методов и сделала ровно тот же итоговый вывод (что innerHTML рулит). Хотя вот у автора табличные методы почему-то самые медленные, у меня тогда они отрабатывали быстрее appendchild (возможно это зависит объема данных или их характера?). Но в итоге innerHTML позволил сократить время вывода с примерно семи минут (для appendchild) до примерно 25 секунд (щас уже не помню точно), причем на больших объемах было видно еще и насколько join работает быстрее конкатенации. (И только увидев результат заказчик понял как ошибался. Вот же блин упертые люди.) Вообще-то мне тогда хотелось сделать примерно следующее: динамически дом-методами формируется энное количество строк, показывается в браузер, а пока юзер их разглядывает - дорисовывается еще энное кол-во строк. В тот раз я так и не добилась нормального результата, сейчас уже могу изобразить чего-то похожее на правду, но поздно :-). Ну что ж, не всем дано сразу всё мочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2008, 07:05 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
ШогалСпасибо, не знал. DOM изучал по w3schools, там про -1 почему-то ни слова ааа... это есть на msdn (если указано кол-во строк или -1 - то доб. в конец, если число > числа строк или число отрицательное, но не -1 - тогда эксепшн). Ради интересу заглянула кроме w3schools еще и в труд господина Флэнагана: он -1 заносит также в эксепшн (т.е. число=кол-во строк - доб. строку в конец, число > кол-ва строки или число отрицательное - эксепшн). На практике же -1 работает везде где мне надо (ие, фф, опера, konqueror). Так что может и дурной совет дала, но сама буду и дальше писать -1 :-). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2008, 07:12 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
IDVsbruckЕще интересный момент... Есть у меня один проектик, достаточно важный (сам понимаешь, писал я его с применением JSONP) там табличка (большая) формируется именно таким способом, что ты написал. Интуитивно что-ли прочухал... . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2008, 10:26 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
ShSerge Есть у меня один проектик, достаточно важный (сам понимаешь, писал я его с применением JSONP) там табличка (большая) формируется насколько большая, каким методом формируется, каким методом и как долго рисуется? (таблицы - это у меня типо пунктика, чего-то я в них нашла притягательное, так што давай рассказывай :-) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2008, 11:24 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
мм а я юзаю jQuery и ряды добавляю примерно так... Код: plaintext ...и не парюсь разве что эксплорер немного задумывается когда надо дорисовать несколько сотен рядов, но думаю что узкое место скорее в процессе формирования рядов, чем дописывания с пом. жквери _______________________________________ 2pro4U ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2008, 18:15 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
Frenzyмм а я юзаю jQuery и ряды добавляю примерно так... Код: plaintext малаток, самый правильный способ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2008, 18:43 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
зы, точно, лучше способа по-моему нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2008, 18:51 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
зы, Piligrimes, ну это как сказать. В смысле в большинстве случаев, но не во всех. Товарищ Frenzy сказал "разве что эксплорер немного задумывается когда надо дорисовать несколько сотен рядов". У меня их было три тыщи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 06:18 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
illion ну это как сказать. В смысле в большинстве случаев, но не во всех. Товарищ Frenzy сказал "разве что эксплорер немного задумывается когда надо дорисовать несколько сотен рядов". У меня их было три тыщи. так а в чем противоречие? ты говоришь что innerhtml рулит. Да рулит но только через него строки ты не допишешь. Или ты делала tbody.innerHTML += '<tr>..</tr><tr>...</tr>' ? :) ну а данный вариант тоже создает ноды из текста, единственное что добавляет их потом к таблице через DOM. Кстати если надо добавить ну просто дофига строк, то лучше детачнуть таблицу, добавить строки, и засунуть в документ обратно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 12:27 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
зы так а в чем противоречие? да ни в чем :-). Это я все о своем, о наболевшем. Речь в данном случае шла об отрисовке таблицы целиком. зы Кстати если надо добавить ну просто дофига строк, то лучше детачнуть таблицу, добавить строки, и засунуть в документ обратно. если мне надо будет добавить в таблицу ну просто дофига строк, то я ни за что сейчас не буду добавлять их всех скопом! Ибо тормоза в браузере появляются не только из-за appendChild, но и в связи с рендерингом страницы, так что по-моему детачнуть и потом обратно вставить - будет то же самое подвисание (эээ... не проверяла конечно, может завтра на работе осилю). В моем последнем опыте по добавлению тыщи строк я их вставляла пачками по 10 штук через appendChild (да, вернулась все-таки от innerhtml к нему в итоге), вызывая вставку последующей пачки через setTimeout через 1мс. Такого разбиения вполне хватило для того, чтоб появилась возможность жать на другие кнопки, смотреть и выделять текст, скроллить страницу, в общем более-менее нормально работать, а не ждать пока браузер выйдет из ступора. Способ имхо сомнительный, зато работает! На дальнейшие эксперименты пока настроя нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 14:28 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
имхо такие большие таблицы - это неюзабельный интерфейс. достаточно добавить пейджер и проблема отпадает. плюс если ещё учесть что динамическое формирование таблиц чаще всего нужно, когда данные для таблицы грузятса аяксом, то в последнем потихоньку смысл пропадает, когда им по 100кбайт грузится. у меня сейчас таблица с 200 строк на странице и то кажется слишком много (элементарно изза того что скролом мотать надо). просто данные очень специфические и тут это более-менее обоснованно _______________________________________ 2pro4U ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 15:19 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
такие большие таблицы - это не то чтоб "неюзабельный интерфейс", это просто глупо. К сожалению, не всегда удается доказать это заказчикам, полжизни просидевшим в обнимку с экселем и не имеющим представления о базах данных, но при этом мнящим себя крутыми перцами, которые в разъяснениях и наставлениях не нуждаются. Настаивали? Мне не жалко - получай фашист гранату! А я получай за это зарплату. Правда не могу избавиться от инстинктивного желания повязать гранату праздничной ленточкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 15:36 |
|
||
|
новая строчка в <table>
|
|||
|---|---|---|---|
|
#18+
Как известно пути ИЕ неисповедимы накорябал пример чтобы побаловаться. Последний механизм не работает, т.к. ИЕ не позволяет засовывать в innerHTML таблицы, выдает ошибку. Так же, несмотря на то, что логика подсказывает, что детачнутые элементы не перерисовываются и следовательно обновляются быстрее (что и доказывает ФФ), в ИЕ все с точностью наоборот с коэффициентом 2. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2008, 17:58 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=35594380&tid=1455678]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
176ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 512ms |

| 0 / 0 |
