Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > appendChild не срабатывает


Автор: studentigor 9.8.2011, 14:21
Всем привет.
есть страница1. На ней есть таблица со списком ссылоко.
Код

<div>
<table id="selp"><tr><td>.....</td></tr></table>
</div>
 
с этой страници открывается дочернее окно, там выполняестя формирование строк таблици.

В итоге мы получаем ещё несколько строк которые нужно вставить в родительском окне в таблицу с id="selp".

вот тот кусок кода которым я это пытаюсь сделать
Код

if (window.opener && !window.opener.closed)
            text = window.opener.document.getElementById('selpr');
            alert(text.innerHTML);//вот это выводится уже имеющееся содержимое таблици - работает.
            text.appendChild(txt);//вот это вставляет текст - но не работает, скрипт на этом прерывается
            text.append(txt);//это тоже не работает
            window.close();


Подскажите как мне такое сделать

Автор: нуп 9.8.2011, 15:01
А что такое txt? 

Автор: studentigor 9.8.2011, 15:14
txt - это тот кусок который нужно вставить. там готовые строки для таблици
ну типи 
Код

<tr><td>...</td></tr>

Ну вобщем строки которые нужно добавить в конец таблици с id="selp"

Автор: нуп 9.8.2011, 15:18
Так надо создать строку, создать ячейки и потов вставить. Все делается через document.createElement("tr")

Автор: studentigor 9.8.2011, 16:19
Я сделал, создал элемент строку. ток и ячейки тоже нужно создавать?
Потому что я когда запихивал уже с td - их не отображает, разметка получается такой
Код

<tr><a>..</a>...</tr>

td получается нету

Автор: нуп 9.8.2011, 16:22
И ячейки и ссылки  smile

Добавлено через 2 минуты и 41 секунду
А либо в строку вставить ячейки через innerHTML
Код

var tr = document.createElement('tr');
tr.innerHTML = '<td>1</td>';
append(tr);

Автор: studentigor 9.8.2011, 16:51
если в вставляемой строке есть td - оно их обрезает.
Код

text = window.opener.document.getElementById('selpr');
            var new_str = document.createElement('tr');
                new_str.innerHTML = txt1+txt2+txt3;
                text.append(new_str);

и получается что td вырезает.

Автор: нуп 9.8.2011, 17:08
Код

<table id="test">
    <tr><td>111</td><td>2222</td></tr>
</table>
<script>
    var tr = document.createElement('tr');
    tr.innerHTML = '<td>33333</td><td>44444</td>';
    document.getElementById('test').appendChild(tr);
</script>

Все работает

Автор: studentigor 9.8.2011, 18:48
Ну я то же самое делаю, но может потому что у меня в дочернем окне это делается, и в ставляеться в родительское.

Во всяком случае спасибо за помощь. буду чёто мутить.

Если так как ты пишешь не получится добить, буду пробовать ещё что-то.

Автор: нуп 9.8.2011, 18:55
Если окно с твоего сайта, то все должно работать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)