powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (DHTML) Удаление строк из таблицы и влияние на этот процесс расположения звёзд.
7 сообщений из 7, страница 1 из 1
(DHTML) Удаление строк из таблицы и влияние на этот процесс расположения звёзд.
    #33445162
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу клиентскую часть будущего форума. Идея такая: не перегружать каждый раз всю страницу ради ерунды. Можно одновременно показывать и список форумов и топики и конкретный топик.

Для отображения топиков я решил использовать таблицу. Добавлять в неё элементы при помощи DOM.
Вот функция:
Код: 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.
function topics_list(level, pre){
      
      var rows = new Array();
      var headers = new Array();
      var autors = new Array();
      var cells1 = new Array();
      var cells2 = new Array();
      var links = new Array();
      var i, j;
      
      clearTable();
      clearTable();
      
      for(i =  0 ; i < parent.frames.topics.topics.length; i++){
        if (parent.frames.topics.topics[i]["parentId"] == level){
          
          
          headers[i] = document.createTextNode(parent.frames.topics.topics[i]["header"]);
          links[i] = document.createElement("a");
          links[i].appendChild(headers[i]);
          links[i].setAttribute("href", "#");
          links[i].setAttribute("onclick", "selectTopic(" + parent.frames.topics.topics[i]["id"] + ")");
          links[i].setAttribute("class", "topic");
          autors[i] = document.createTextNode(parent.frames.topics.topics[i]["autor"]);
          cells1[i] = document.createElement("td");
          cells1[i].appendChild(links[i]);
          cells1[i].setAttribute("class", "topic_row");
          cells2[i] = document.createElement("td");
          cells2[i].appendChild(autors[i]);
          rows[i] = document.createElement("tr");
          rows[i].appendChild(cells1[i]);
          rows[i].appendChild(cells2[i]);
          rows[i].setAttribute("style", "background-color: #FFE;");
          document.getElementById("topic_area").rows[ 0 ].parentNode.appendChild(rows[i]);
        
        }
      }
    }
Элементы берутся из другого фрейма и представляют собой массив объектов такого примерно вида:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<script>
  var topics = new Array();
  
  topics[ 0 ] = new Object();
  topics[ 0 ]["autor"] = "Sarin";
  topics[ 0 ]["id"] =  1 ;
  topics[ 0 ]["parentId"] =  0 ;
  topics[ 0 ]["header"] = "фЕУФ, ВМС!";

  parent.frames.forum.topics_list( 0 , " ");
</script>
В конце этого кода и вызывается функци-отрисовщик (topics_list(0, " ")).
Проблема именно с ней. Перед отрисовкой надо из таблицы поудалять все строки кроме первой.
Вот функция, которая это делает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
function clearTable(){
    
      var i;
    
      for (i =  1 ; i < document.getElementById("topic_area").rows.length; i++){
          document.getElementById("topic_area").rows[ 0 ].parentNode.removeChild(document.getElementById("topic_area").rows[i]);
      }
    }

После работы этой функции в таблице иногда загадочным образом остаётся лишняя строка.
Если её вызвать два раза подряд, всё хорошо.
Но мне непонятно, почему одного раза не хватает. А значит в программе есть ошибка, которую я не исправил.

Кто с таким сталкивался?

ЗЫ: весь код прилагается.
...
Рейтинг: 0 / 0
(DHTML) Удаление строк из таблицы и влияние на этот процесс расположения звёзд.
    #33445279
VERS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код не смотрел, но на вскидку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
function clearTable(){
    
      var i; var tmp;
      tmp = document.getElementById("topic_area").rows.length;
      for (i =  1 ; i < tmp; i++){
          document.getElementById("topic_area").rows[ 0 ].parentNode.removeChild(document.getElementById("topic_area").rows[i]);
      }
    }

-------------------------------
www.free-lancer.ru
...
Рейтинг: 0 / 0
(DHTML) Удаление строк из таблицы и влияние на этот процесс расположения звёзд.
    #33445308
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VERSКод не смотрел, но на вскидку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
function clearTable(){
    
      var i; var tmp;
      tmp = document.getElementById("topic_area").rows.length;
      for (i =  1 ; i < tmp; i++){
          document.getElementById("topic_area").rows[ 0 ].parentNode.removeChild(document.getElementById("topic_area").rows[i]);
      }
    }

-------------------------------
www.free-lancer.ru
Найди десять отличий? У мя так же.
...
Рейтинг: 0 / 0
(DHTML) Удаление строк из таблицы и влияние на этот процесс расположения звёзд.
    #33445357
VERS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну тады, вот этот работает на ура ...
Код: 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.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
	<title>Untitled</title>
</head>

<body>
<table id="dtable">
<tr>
       <td>sdf</td>
       <td>sdf</td>
</tr>
<tr>
       <td>asdf</td>
       <td>dsf</td>
</tr>
<tr>
       <td>dsf</td>
       <td>sdf</td>
</tr>
</table>
<input type="button" value="clear" onclick="clearTable()">
</body>
<script>
function clearTable(){
      var i; var tmp;
      tmp = document.getElementById('dtable').rows.length;
      for (i =  1 ; i < tmp; i++) {
          document.getElementById('dtable').deleteRow( 1 );
      }
    }
</script>
</html>
-------------------------------
www.free-lancer.ru
...
Рейтинг: 0 / 0
(DHTML) Удаление строк из таблицы и влияние на этот процесс расположения звёзд.
    #33445385
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не. У меня тож не пашет. Ладно. Завтра перепишу чтоб таблица целиком с нуля строилась.
...
Рейтинг: 0 / 0
(DHTML) Удаление строк из таблицы и влияние на этот процесс расположения звёзд.
    #33446616
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще странно, что два вызова удаляют-таки все строки. Если делать, как ты написал, всегда должна будет оставаться одна строка.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
(DHTML) Удаление строк из таблицы и влияние на этот процесс расположения звёзд.
    #33447585
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoвообще странно, что два вызова удаляют-таки все строки. Если делать, как ты написал, всегда должна будет оставаться одна строка.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
Да, извини. Недосып. Одна остаётся ВСЕГДА. Так надо. Вот тока при одном вызове остаются несколько. Две, точнее.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (DHTML) Удаление строк из таблицы и влияние на этот процесс расположения звёзд.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]