Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удаление стро(tr) в таблице, не получается 
V
    Опции темы
zammar
Дата 23.7.2009, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 289
Регистрация: 30.10.2008

Репутация: нет
Всего: нет



Нужно удалить все строки в таблице кроме первой и последней.
Не получается так сделать. Удаляется только половина строк.
Подскажите где у меня ошибка. плз.

Код


                function afterLoadDeleteResult()
                {
                    var table = document.getElementById("pl_polls_result_table");

                    var count = table.rows.length;

                    for (var i = 0; i < count; i++)
                    {

                        if(table.rows[i].id != "first_tr" && table.rows[i].id != "last_tr")
                        {
                            var curRow = document.getElementById(table.rows[i].id);
                            curRow.removeNode(true);

                        }
                    }
        }




Код

<table cellspacing="0" cellpadding="0" border="1" id="pl_polls_result_table" style="width: 100%;">
    <tr id="first_tr">
        <th align="center" class="header">IP</th>
        <th align="center" class="header">Дата и время</th>
        <th align="center" class="header">Текст результата голосования</th>
        <th class="header"> </th>                
        <th class="header"> </th>            
    </tr>
    <tr class="odd" id="821">
        <td id="ip_821" style="text-align: center; width: 40px;">123,123,123,123</td>
        <td id="date_821" style="text-align: center; width: 40px;">15.03.1973 03:50</td>
        <td id="text_821" style="text-align: center; width: 40px;">ывапываепва</td>        
        <td style="text-align: center; width: 40px;">                    
ssssssssssssssss
        </td>
        <td style="text-align: center; width: 40px;">
sssssssssss
        </td>
    </tr>
    <tr class="even" id="820">
        <td id="ip_820" style="text-align: center; width: 40px;">123,123,123,123</td>
        <td id="date_820" style="text-align: center; width: 40px;">15.03.1973 03:50</td>
        <td id="text_820" style="text-align: center; width: 40px;">вапвапвапв</td>
        <td style="text-align: center; width: 40px;">                        
sssssssssssssssssss
        </td>                    
        <td style="text-align: center; width: 40px;">    
sssssssssssssssss
        </td>    
    </tr>
    <tr class="odd" id="819">
        <td id="ip_819" style="text-align: center; width: 40px;">123,123,123,123</td>
        <td id="date_819" style="text-align: center; width: 40px;">15.03.1973 03:50</td>
        <td id="text_819" style="text-align: center; width: 40px;">авпывапывап</td>
        <td style="text-align: center; width: 40px;">
sssssssssssssssss
        </td>
        <td style="text-align: center; width: 40px;">
sssssssss
        </td>
    </tr>
    <tr class="even" id="818">
        <td id="ip_818" style="text-align: center; width: 40px;">123,123,123,123</td>
        <td id="date_818" style="text-align: center; width: 40px;">15.03.1973 03:50</td>
        <td id="text_818" style="text-align: center; width: 40px;">вапвыапвы</td>
        <td style="text-align: center; width: 40px;">
sssssssssssssss
        </td>
        <td style="text-align: center; width: 40px;">
sdssssssssssssss
        </td>
    </tr>
    <tr class="odd" id="817">
        <td id="ip_817" style="text-align: center; width: 40px;">123,123,123,123</td>
        <td id="date_817" style="text-align: center; width: 40px;">15.03.1973 03:50</td>
        <td id="text_817" style="text-align: center; width: 40px;">вапывап</td>
        <td style="text-align: center; width: 40px;">
SSSSSSSSSSSSSSSSSS
        </td>
        <td style="text-align: center; width: 40px;">
dddddddddd
        </td>
    </tr>
    <tr class="odd" id="last_tr">
        <td> </td>
        <td> </td>
        <td> </td>
        <td> </td>            
        <td></td>
    </tr>
</table>

<br />

<a href="#" onClick="afterLoadDeleteResult();">dgkdsgdfg</a>



PM   Вверх
InvalidProperty
Дата 23.7.2009, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 356
Регистрация: 31.10.2007
Где: Россия, Казань

Репутация: нет
Всего: 9



если кроме первой и последней, то почему бы не попробовать цикл
Код

for (var i = 1; i < count - 1; i++)

тогда и от условия внутри цикла избавишься


--------------------
dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null
dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null
echo $0 >> $0
PM MAIL ICQ Jabber   Вверх
zammar
Дата 23.7.2009, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 289
Регистрация: 30.10.2008

Репутация: нет
Всего: нет



Спасбо за оптимизацию, но суть вопроса не в этом. А том что почему-то не удалются все строки сразу. Не пойму почему? smile 
PM   Вверх
underW
Дата 23.7.2009, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 22.9.2008

Репутация: 2
Всего: 3



сори, но что значит:
Код

не удалются все строки сразу

строки удаляются в цикле по одной. 
PM MAIL   Вверх
zammar
Дата 23.7.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 289
Регистрация: 30.10.2008

Репутация: нет
Всего: нет



Не точно описал. 
Просто когда я удалял по одной строке (код здесь не преведен) при нажатии на определенную кнопку, то строка удляется нормально, а когда в цикле то не все удаляются.

Вообщем вот работающий код. Не знаю как и почему не получалось раньше и получается теперь. Использовал метод тыка. smile 
Оставляю тему открытой может кто объяснит почему выше приведенный код не работает?

Код


                function afterLoadDeleteResult()
                {
                        var table = document.getElementById("pl_polls_result_table");
                        table = table.tBodies[0];

                        var count = table.rows.length;
                        var t = count-1;

                        while (count > 2)
                        {
                            if(table.rows[t].id != "first_tr" && table.rows[t].id != "last_tr")
                            {
                                var curRow = document.getElementById(table.rows[t].id);
                                table.removeChild(curRow);
                            }

                            t--;
                        }
                }



Код

<table cellspacing="0" cellpadding="0" border="1" id="pl_polls_result_table" style="width: 100%;">
    <tr id="first_tr">
        <th align="center" class="header">IP</th>
        <th align="center" class="header">Дата и время</th>
        <th align="center" class="header">Текст результата голосования</th>
        <th class="header"> </th>                
        <th class="header"> </th>            
    </tr>
    <tr class="odd" id="821">
        <td id="ip_821" style="text-align: center; width: 40px;">123,123,123,123</td>
        <td id="date_821" style="text-align: center; width: 40px;">15.03.1973 03:50</td>
        <td id="text_821" style="text-align: center; width: 40px;">ывапываепва</td>        
        <td style="text-align: center; width: 40px;">                    
ssssssssssssssss
        </td>
        <td style="text-align: center; width: 40px;">
sssssssssss
        </td>
    </tr>
    <tr class="even" id="820">
        <td id="ip_820" style="text-align: center; width: 40px;">123,123,123,123</td>
        <td id="date_820" style="text-align: center; width: 40px;">15.03.1973 03:50</td>
        <td id="text_820" style="text-align: center; width: 40px;">вапвапвапв</td>
        <td style="text-align: center; width: 40px;">                        
sssssssssssssssssss
        </td>                    
        <td style="text-align: center; width: 40px;">    
sssssssssssssssss
        </td>    
    </tr>
    <tr class="odd" id="819">
        <td id="ip_819" style="text-align: center; width: 40px;">123,123,123,123</td>
        <td id="date_819" style="text-align: center; width: 40px;">15.03.1973 03:50</td>
        <td id="text_819" style="text-align: center; width: 40px;">авпывапывап</td>
        <td style="text-align: center; width: 40px;">
sssssssssssssssss
        </td>
        <td style="text-align: center; width: 40px;">
sssssssss
        </td>
    </tr>
    <tr class="even" id="818">
        <td id="ip_818" style="text-align: center; width: 40px;">123,123,123,123</td>
        <td id="date_818" style="text-align: center; width: 40px;">15.03.1973 03:50</td>
        <td id="text_818" style="text-align: center; width: 40px;">вапвыапвы</td>
        <td style="text-align: center; width: 40px;">
sssssssssssssss
        </td>
        <td style="text-align: center; width: 40px;">
sdssssssssssssss
        </td>
    </tr>
    <tr class="odd" id="817">
        <td id="ip_817" style="text-align: center; width: 40px;">123,123,123,123</td>
        <td id="date_817" style="text-align: center; width: 40px;">15.03.1973 03:50</td>
        <td id="text_817" style="text-align: center; width: 40px;">вапывап</td>
        <td style="text-align: center; width: 40px;">
SSSSSSSSSSSSSSSSSS
        </td>
        <td style="text-align: center; width: 40px;">
dddddddddd
        </td>
    </tr>
    <tr class="odd" id="last_tr">
        <td> </td>
        <td> </td>
        <td> </td>
        <td> </td>            
        <td></td>
    </tr>
</table>

<br />

<a href="#" onClick="afterLoadDeleteResult();">dgkdsgdfg</a>



PM   Вверх
InvalidProperty
Дата 23.7.2009, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 356
Регистрация: 31.10.2007
Где: Россия, Казань

Репутация: нет
Всего: 9



а я не знаю, почему твой нынешний код работает нормально. Это, видимо, фишка конкретного браузера
Код

var count = table.rows.length;
...
while (count > 2)
{
 // тут ничего про count нет
}

совсем другое дело, если бы ты написал
Код

function afterLoadDeleteResult()
{
 var table = document.getElementById("pl_polls_result_table");
 table = table.tBodies[0];
 while(table.rows[1].id != "last_tr")
 {  
  var curRow = document.getElementById(table.rows[1].id);
  table.removeChild(curRow);
 }
}

код не проверял, но, с первого взгляда, должен работать правильно.

немного попытаюсь объяснить, почему твой первый код мог не работать:
если браузер обрабатывает список нодов также, как c++ обрабатывает STL vector, например, то представь себе следующую ситуацию:
ты в цикле пробегаешь, допустим, 10 элементов, второй удаляешь, далее следует какой? пральна - 3ий, а 3ий в это время уже на втором месте. К тому же совсем не этично пробегать именно for(;i < count;), ибо count изменится при первом же удалении, а ты так и будешь ждать выполнения условия. Для этих целей лучше всего while использовать


--------------------
dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null
dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null
echo $0 >> $0
PM MAIL ICQ Jabber   Вверх
zammar
Дата 23.7.2009, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 289
Регистрация: 30.10.2008

Репутация: нет
Всего: нет



Эврика!
Точно, у меня строки через один и удалялись smile 
InvalidProperty, при много благодарен!!!! smile 

PM   Вверх
InvalidProperty
Дата 23.7.2009, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 356
Регистрация: 31.10.2007
Где: Россия, Казань

Репутация: нет
Всего: 9



zammar, рад, что помог, комрад  smile

Добавлено через 1 минуту и 33 секунды
если тема решена, пометь галочкой, чтобы другие тоже могли порадоваться твоему счастью


--------------------
dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null
dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null
echo $0 >> $0
PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0699 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.