Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   insertBefore выдаёт ошибку и не работает на опере и фоксе (https://javascript.ru/forum/misc/1802-insertbefore-vydajot-oshibku-i-ne-rabotaet-na-opere-i-fokse.html)

SunnyDay 18.09.2008 16:28

insertBefore выдаёт ошибку и не работает на опере и фоксе
 
Собственно метод insertBefore отказывается работать с динамически созданными элементами - тоесть если я напишу так:

Код:

    document.write('<A id="bigf" href="">sdfsdf</A>');
    document.body.insertBefore(document.getElementById('bigF'), document.body.firstChild)

или так:

Код:

    el0=document.createElement('<A>');
    el0.id='bigF';
    el0.setAttribute('href',"gfdg");       
    el0.innerHTML="dvfgsdvdfbvdfbfgb";
    document.body.insertBefore(document.getElementById('bigF'), document.body.firstChild)

то файрдебаг выдаёт мне странную ошибку:

uncaught exception: [Exception... "Component returned failure code: 0x80004003 (NS_ERROR_INVALID_POINTER) [nsIDOMHTMLBodyElement.insertBefore]" nsresult: "0x80004003 (NS_ERROR_INVALID_POINTER)" location: "JS frame :: file:///C:/Documents%20and%20Settings/sukhov/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%8 1%D1%82%D0%BE%D0%BB/web%20mast/Work/123.htm :: put_code :: line 18" data: no]

работает нормально только в ишаке (как не странно..)

сделать через body.innerHTML немогу, потому что при присаивании body.innerHTML какого либо значения сбрасываются указатели на всякие ноды.

помогите, если ктонибудь с этим знаком

ZoNT 18.09.2008 17:33

Цитата:

Сообщение от SunnyDay (Сообщение 5988)
Код:

    document.write('<A id="bigf" href="">sdfsdf</A>');
    document.body.insertBefore(document.getElementById('bigF'), document.body.firstChild)


В дереве документа ещё не появился узел (ну не успел его браузер туда ещё вставить), а ты уже к нему обращаешся...

Цитата:

Сообщение от SunnyDay (Сообщение 5988)
Код:

    el0=document.createElement('<A>');
    el0.id='bigF';
    el0.setAttribute('href',"gfdg");       
    el0.innerHTML="dvfgsdvdfbvdfbfgb";
    document.body.insertBefore(document.getElementById('bigF'), document.body.firstChild)


Элемент создал, к дереву не прикрепил и уже его ищешь (document.getElementById('bigF')). Во даёшь...
Код:

    var el0=document.createElement('а'); //!!! Какие нафиг "<A>"
    el0.id='bigF';
    el0.href = "gfdg";
    el0.innerHTML="dvfgsdvdfbvdfbfgb";
   
    document.body.insertBefore(el0, document.body.firstChild);


SunnyDay 19.09.2008 10:41

Спасибо за помощь гуру ;)

ZoNT 19.09.2008 12:08

Я не гуру, я профессор :D


Часовой пояс GMT +3, время: 21:33.