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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятки с дочерними узлами, Родители разные, а дочки одинаковые 
:(
    Опции темы
kaa
  Дата 27.5.2006, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Данным кодом вставляю в таблицу строку из двух колонок:
Код


var temp = add_user.childNodes[i].firstChild.nodeValue;
                    var tableNode = document.childNodes[0].childNodes[1].firstChild; 
                    var new_tr = document.createElement("tr");
                    var new_td = document.createElement("td");
                    var new_img = document.createElement("img");
                    var new_link = document.createElement("a");
                    var new_text = document.createTextNode(temp);
                    
                    tableNode.appendChild(new_tr);
                    tableNode.lastChild.appendChild(new_td);
                    tableNode.lastChild.appendChild(new_td);
                    tableNode.lastChild.firstChild.appendChild(new_img);
                    tableNode.lastChild.lastChild.appendChild(new_link);
                    alert(tableNode.lastChild.firstChild.firstChild.nodeName);
                    alert(tableNode.lastChild.lastChild.firstChild.nodeName);




У таблицы дочка - строка, у строки две дочки - два столбца, у каждого столбца по дочке: у первого блок <img>  у второго <a></a>.

НО! Алерты выводят одно и тоже, хотя я обращаюсь по сути к разным столбцам (первому и последнему). ПОЧЕМУ?! smile  
PM MAIL   Вверх
kaa
Дата 28.5.2006, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В частности вот где трабл проявляется:

 
Код

tableNode.appendChild(new_tr);
                    tableNode.lastChild.appendChild(new_td);
                    tableNode.lastChild.appendChild(new_td);
                    tableNode.lastChild.firstChild.appendChild(new_img);
                    tableNode.lastChild.lastChild.appendChild(new_link);


Люди! Ну неужто никто незнает?! 
PM MAIL   Вверх
Alx
Дата 28.5.2006, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

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



kaa, приведи полный код, с HTML, тогда посмотрю, так лень соображать... 


--------------------
PM MAIL WWW ICQ   Вверх
kaa
Дата 29.5.2006, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Пжалста...  smile 

Код

<html>
<head>
</head>
<script language="javascript">
    setInterval("fUpdate()",2000);
    var parent_window = window.parent;
    function fUpdate()
    {
        var add_user = parent_window.frame5.document.getElementById("AddUser");
                
        if(add_user.hasChildNodes())
        {
            var child_amount = add_user.childNodes.length;
            alert(child_amount-1);
            for(var i=0; i<=child_amount-1; i++)
            {
                if(add_user.childNodes[i].nodeType == 1)
                {
                    var temp = add_user.childNodes[i].firstChild.nodeValue;
                    var tableNode = document.childNodes[0].childNodes[1].firstChild; 
                    var new_tr = document.createElement("tr");
                    var new_td = document.createElement("td");
                    var new_img = document.createElement("img");
                    var new_link = document.createElement("a");
                    var new_text = document.createTextNode(temp);
                    
                    tableNode.appendChild(new_tr);
                    tableNode.lastChild.appendChild(new_td);
                    tableNode.lastChild.appendChild(new_td);
                    tableNode.lastChild.firstChild.appendChild(new_img);
                    tableNode.lastChild.lastChild.appendChild(new_link);
                    alert(tableNode.lastChild.firstChild.firstChild.nodeName);
                    alert(tableNode.lastChild.lastChild.firstChild.nodeName);
                    
                }
            }
            
        }            
    }
    
    function linkClick()
    {
        
    }
    
</script>

<body bgcolor="#FD5433" style="padding:0; margin:0">
    <table>
    </table>
</body>

</html>
 


Два алерта в конце - это для отладка, типа посмотреть что куда вставилось... Ими-то я и выловил баг. 

Это сообщение отредактировал(а) kaa - 29.5.2006, 00:39
PM MAIL   Вверх
Alx
Дата 29.5.2006, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

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



всё равно не понятно.. там фреймы какие-то задействованы... 


--------------------
PM MAIL WWW ICQ   Вверх
kaa
Дата 29.5.2006, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот содержимое 5-го фрейма:

Код

<html>
<head>
</head>

<body bgcolor="#F957F3">
<div id="OnLine">
    y
    <p id="GlobalMessage">test</p>
    <p id="GlobalMessageNew">y</p>
    <p id="PrivateMessage">test</p>
    <p id="PrivateMessageNew">y</p>
    <p id="ErrorMessage"></p>
    
    <div id="AddUser"><div>1<p>m</p></div><div>2<p>f</p></div></div>
    
        
</div>

</body>
</html>



Тока оно здесь никчему, пятый фрейм - это данные, он пассивен по своей сути...  А траблы возникают вот здесь

 
Код

tableNode.appendChild(new_tr);
                    tableNode.lastChild.appendChild(new_td);
                    tableNode.lastChild.appendChild(new_td);
                    tableNode.lastChild.firstChild.appendChild(new_img);
                    tableNode.lastChild.lastChild.appendChild(new_link);
                    alert(tableNode.lastChild.firstChild.firstChild.nodeName);
                    alert(tableNode.lastChild.lastChild.firstChild.nodeName);


При добавлениии ячеек. Лично я так думаю.. 
PM MAIL   Вверх
kaa
Дата 29.5.2006, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В общем нашёл я где глюк. Глюк здесь:

Код

var new_td = document.createElement("td");


И здесь

Код

tableNode.lastChild.appendChild(new_td);
tableNode.lastChild.appendChild(new_td);



А надобыло оказывается так

Код

var new_td = document.createElement("td");
var new_td1 = document.createElement("td");
tableNode.lastChild.appendChild(new_td);
tableNode.lastChild.appendChild(new_td1);




А вот теперь объясните мне пожалста кто-нить, почему выражение
Код

tableNode.lastChild.appendChild(new_td);
tableNode.lastChild.appendChild(new_td);

 воспринимается как добавление одной строки?!
Это прописанов спецификации DOM? Веть кажись по ней работаем... 
PM MAIL   Вверх
smartov
Дата 30.5.2006, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

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



Цитата(kaa @  29.5.2006,  22:41 Найти цитируемый пост)
 воспринимается как добавление одной строки?!Это прописанов спецификации DOM? Веть кажись по ней работаем... 

Да так и прописано.
Параметр у тебя один и тот же. node одна и таже. Что же ты хотел. Это же ссыла.
Хочешь два разных - создай заново, не проблема.
Код

for (var i=0;i<2;i++)
{
    var new_td = document.createElement("td");
    tableNode.lastChild.appendChild(new_td);
}
 
PM MAIL   Вверх
kaa
Дата 30.5.2006, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



smartov, Спасиба, понял   smile  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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