Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   изучаю dom (https://javascript.ru/forum/events/21693-izuchayu-dom.html)

olga153b 20.09.2011 15:52

изучаю dom
 
html имеет 2 потомка head и body.
alert(document.body.parentNode) дает html.
почему alert(document.head.parentNode) не дает html.

Sweet 20.09.2011 16:13

А в каком браузере? В Chrome дает:
alert( document.head.parentNode );

olga153b 20.09.2011 16:32

в FF дает ошибка: document.head is undefined

olga153b 20.09.2011 16:56

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>О лосях</title>
<script>
alert(document.body.firstChild)


</script>

    </head>
    <body>
        Правда о лосях.
        <ol>

            <li>
                Лось - животное хитрое
             </li>
            <li>
                .. И коварное
            </li>
        </ol>
    </body>
</html>

еще первый ребенок у body должен быть ol
ничего не дает

Sweet 20.09.2011 16:57

Это совсем другое. Просто у document нет свойства .head. Используй другой способ получить его:
if( !document.head )
  document.head = document.getElementsByTagName( "head" )[ 0 ]
alert( document.head.parentNode );

Sweet 20.09.2011 17:01

Цитата:

Сообщение от olga153b
ничего не дает

Неправда! Дает ошибку. Используй дебаггер (например, firebug). Там ошибка, что body еще не существует.
Цитата:

Сообщение от olga153b
еще первый ребенок у body должен быть ol

Нет, должен быть текстовый узел.

olga153b 20.09.2011 17:08

а почему условие проверяется через if?, я видела (?: )
и второй вопрос не могу разобраться с this.
Написано, что это указатель и зависит от контекста.
Провожу аналогию: указатель, это на вокзале указывает выход в город,
на 5,6 путь, в камеры хранения ит.д.
Контекст это например коса у девочки, коса косит траву, коса в море,
это зависимо от контекста.
с чем это можно сравнить, чтобы понять смысл?

olga153b 20.09.2011 17:10

да дает ошибку, хотела отредактировать у меня не получилось

melky 20.09.2011 17:13

Цитата:

Сообщение от olga153b (Сообщение 127342)
с чем это можно сравнить, чтобы понять смысл?

ЭТО оно и в африке ЭТО.

ЭТО по-умолчанию - window, глобальный объект.

//говорит о контексте.
function a(){alert(this)}

a(); // window.

var myObj = {};
a.call( myObj )// сменили переменную this на этот пустой объект

// по умолчанию ?
a.call( null ); // window
a.call( undefined );

olga153b 20.09.2011 17:18

а если я уберу текст "Правда о лосях", будет 1 ребенком ol?
большое Вам спасибо я добавлю Вам 1

melky 20.09.2011 17:29

нет, будет текст - перенос строки

olga153b 20.09.2011 17:36

да дает ошибку ошибка: syntax error

olga153b 20.09.2011 17:54

Цитата:

Сообщение от Sweet (Сообщение 127338)
Неправда! Дает ошибку. Используй дебаггер (например, firebug). Там ошибка, что body еще не существует.Нет, должен быть текстовый узел.

а какой там текст? Перевод строки, возврат каретки.
еще мне не понятно почему Body еще не существует


а что нужно сделать, чтобы первым ребенком был ol?
и что ему надо чтобы Body существовало?

melky 20.09.2011 22:26

<body><ol>

тогда будет первым.

body будет существовать,если поместить скрипт ниже body :)

или вызывать функцию взаимодействия с dom по загрузке страницы

olga153b 21.09.2011 16:42

document.body is null
file:///C:/Documents%20and%20Settings/SY/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%8 1%D1%82%D0%BE%D0%BB/pervaya_rabota/poisk_dom/%D0%9A%D0%BE%D0%BF%D0%B8%D1%8F%20(2)%20los.html
Line 6
Firebug дает ошибку, но в чем ошибка, я в этом ничего не понимаю, где почитать подскажите плз. Еще я не понимаю, что означает [object Object]

olga153b 21.09.2011 17:04

Да, ошибка убралась, когда перенесла скрипт ниже Body.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>О лосях</title>
    </head>
    <body><ol>
            <li>
                Лось - животное хитрое
             </li>
            <li>
                .. И коварное
            </li>
        </ol>
<script>
alert(document.body.firstChild)
</script>
    </body>
</html>

когда запустила отсюда получилась ошибка

ошибка: syntax error

а с чем это связано?

olga153b 21.09.2011 17:15

йцукен енгшщ
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>О лосях</title>
    </head>
<script>

window.onload = alert(document.body.firstChild)

</script>
    <body><ol>
            <li>
                Лось - животное хитрое
             </li>
            <li>
                .. И коварное
            </li>
        </ol>

    </body>
</html>

вызывать функцию взаимодействия с dom по загрузке страницы
я правильно поняла или нет?
__________________

Magneto 21.09.2011 18:41

<html>
    <head>
        <title>О лосях</title>
<script>

window.onload = function () {
  alert(document.body.firstChild);
}

</script>
 </head>
    <body>
<ol>
            <li>
                Лось - животное хитрое
             </li>
            <li>
                .. И коварное
            </li>
        </ol>

    </body>
</html>

Magneto 21.09.2011 18:44

Верно, когда страница полностью загрузится сработает событие onLoad и вызовет функцию, в функции же происходит работа с DOM.

olga153b 21.09.2011 19:28

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

olga153b 21.09.2011 19:41

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>О лосях</title>
    </head>
<script>

window.onload = function () {
	  alert(document.body.firstChild);
		alert(document.ol.firstChild);
	}

</script>
    <body><ol><li>
                Лось - животное хитрое
             </li>
            <li>
                .. И коварное
            </li></ol></body>
</html>

скажите плз первый ребенок ol так не появляется, а должен появиться
li. что ему надо?

Neldmit 21.09.2011 20:37

Недавно изучаю великий и могучий javascript, но, по-моему, для того чтобы работало надо найти элемент в дереве:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>О лосях</title>
<script>
window.onload = function () {
var ol = document.getElementById('id');
             alert(document.body.firstChild);
	     alert(ol.firstChild);
	     }
</script>
    </head>

    <body><ol id='id'><li>
                Лось - животное хитрое
             </li>
            <li>
                .. И коварное
            </li></ol>
</body>
</html>


И Ольга, заключайте код html в html теги, а не JS, а то так javascript не будет работать здесь.

olga153b 24.09.2011 21:52

alert( document.head.parentNode );
да, в хроме дает HTML

olga153b 24.09.2011 23:09

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>О лосях</title>
<script>
var newDiv = document.createElement('div')
newDiv.className = 'my-class'
newDiv.id = 'my-id'
newDiv.style.backgroundColor = 'red'

newDiv.innerHTML = 'Привет, мир!'
</script>

    </head>
    <body>
        Правда о лосях.
        <ol>
            <li>
                Лось - животное хитрое
             </li>
            <li>
                .. И коварное
            </li>
        </ol>
    </body>
</html>

хочу создать новый элемент, что ему надо чтоб создался DIV.

walik 24.09.2011 23:27

documen.body.appendChild(newDiv);

olga153b 25.09.2011 00:17

Цитата:

Сообщение от walik (Сообщение 127967)
documen.body.appendChild(newDiv);

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>О лосях</title>


    </head>
    <body>
        Правда о лосях.
        <ol>
            <li>
                Лось - животное хитрое
             </li>
            <li>
                .. И коварное
            </li>
        </ol>
<script>

var newDiv = document.createElement('div')
newDiv.className = 'my-class'
newDiv.id = 'my-id'
newDiv.style.backgroundColor = 'red'

newDiv.innerHTML = 'Привет, мир!'
documen.body.appendChild(newDiv);
</script>

    </body>
</html>

поставила, но наверное еще что-то надо, нигде не появилось "привет мир"

Magneto 25.09.2011 00:42

Строка N26 ошибка нужно писать document а у Вас documen.
Учитесь пользоваться отладчиками, в каждом браузере есть вызываются быстрой клавишей F12.

olga153b 25.09.2011 11:24

Magneto,
спасибо большое, но 1 чего-то Вам не ставится, позже поставлю


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