Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: работа с DOM: в чем ошибка
 
 автор: kb_nn   (01.12.2012 в 10:56)   письмо автору
 
 

подскажите, что неправильно. хочу в элемент с id=my_elem добавить элементы obj в виде списка
function show_elems(obj){
    var f=document.getElementById("my_elem");
    var ul=document.createElement("ul");
    if(obj && typeof obj =="object"){
        for(var i in obj){
            var li=document.createElement("li");
            var txt=document.createTextNode(obj[i]);
            li.appendChild(txt);
            ul.appendChild(li);
        }
        f.appendChild(ul); //возникает ошибка: "null" есть null или не является объектом
    }
}

  Ответить  
 
 автор: ЯСА   (01.12.2012 в 11:26)   письмо автору
 
   для: kb_nn   (01.12.2012 в 10:56)
 

в самой функции ошибок нет
поэтому проверяйте:
-- либо что-то не то с объектом obj
-- либо что-то не то с "my_elem"

  Ответить  
 
 автор: kb_nn   (01.12.2012 в 14:47)   письмо автору
 
   для: ЯСА   (01.12.2012 в 11:26)
 

а если написать так
show_elems=function(obj){
    var f=document.getElementsByTagName("body")[0];
    var ul=document.createElement("ul");
    if(obj && typeof obj =="object"){
        for(var i in obj){
            var li=document.createElement("li");
            var txt=document.createTextNode(obj[i]);
            li.appendChild(txt);
            ul.appendChild(li);
        }
        f.appendChild(ul);
    }
}({x:10})

в той же строке ошибка "undefined" есть null или не является объектом

  Ответить  
 
 автор: ЯСА   (01.12.2012 в 21:45)   письмо автору
 
   для: kb_nn   (01.12.2012 в 14:47)
 

вероятнее всего, вы обращаетесь к вашей функции ещё ДО формирования тега "my_elem" (первый раз)

и ДО того, как парсер браузер добрался до закрывающего тега </body> (во второй раз)
------

кстати, объясните пожалуйста, а почему вы используете document.getElementsByTagName("body")[0], а не просто document.body ?

(поправлено модератором)

  Ответить  
 
 автор: kb_nn   (01.12.2012 в 22:17)   письмо автору
 
   для: ЯСА   (01.12.2012 в 21:45)
 

>вероятнее всего, вы обращаетесь к вашей функции ещё ДО формирования тега "my_elem" (первый раз)
вот в чем было дело!!!!!! спасибо :)
про document.body не додумался, что касается document.getElementsByTagName то я всегда думал, что он возвращает массив, вне зависимости от кол-ва элементов.

  Ответить  
 
 автор: ЯСА   (01.12.2012 в 23:40)   письмо автору
 
   для: kb_nn   (01.12.2012 в 22:17)
 

>"что касается document.getElementsByTagName то я всегда думал, что он возвращает массив, вне зависимости от кол-ва элементов"

разумеется, метод getElementsByTagName возвращает массив - буквочка s об том говорит недвусмысленно

но тег <body></body> на странице должен быть один - зачем из одного элемента творить массив, а потом обращаться к единственному его элементу?
----------

в DHTML всего два тега имеют собственные имена-ссылки:
это document.body для тега <body></body>
и document.title для тега <title></title>
и есть таковые имена потому (в том числе), что теги эти должны быть на странице в единственном числе
запомнить, мне кажется, не сложно

UPDATE: соврал... три тега - с недавних пор есть ещё document.doctype для тега <!doctype>

  Ответить  
 
 автор: kb_nn   (02.12.2012 в 15:43)   письмо автору
 
   для: ЯСА   (01.12.2012 в 23:40)
 

>в DHTML всего два тега имеют собственные имена-ссылки:
>это document.body для тега <body></body>
document.title для тега <title></title>
>и есть таковые имена потому (в том числе), что теги эти должны быть на странице в единственном числе
>запомнить, мне кажется, не сложно
>
>UPDATE: соврал... три тега - с недавних пор есть ещё document.doctype для тега <!doctype>

теперь запомню, спасибо. но тег <body> у меня на странице один.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования