setAttribute неясность
Здравствуйте
Только начал изучать js и потому такой вопрос) Если мы в js устанавливаем свойство(или атрибут, пока разницы не понимаю) для тега <body>. Должен ли он появиться у тега при формировании страницы или он существует только в самой программе js? <html> <head> </head> <body id="MyProperty"> <script> var e = document.getElementById('MyProperty'); e.setAttribute('clai', 'link'); </script> </body> </html> Спасибо |
Цитата:
Цитата:
|
Попробовал тот же код сгенерировать на локальном сервере и у тега <body> атрибут так и не добавился к перечню свойств
что требовалось: до того, как был добавлен код на js, тег body в бокументе имел следующий вид <body id="MyProperty"> после скрипта я думал получить <body id="MyProperty" clai="link"> теоретически, как я понял со слов уважаемого Kolyaj, некоторые свойства добавляться должны, а почему в данном случае нет? |
Если вы смотрите исходник страницы, то вы не увидите там никаких следов работы JS, т.к. браузер показывает то, что пришло с сервера. А с сервера у вас пришло без этого атрибута.
А какая собственно разница, добавляется что-то в тег или нет? |
Ну просто я пришел в js из с и php и пытаюсь найти общие закономерности да и разобраться с языком)
И что же получается, что страница в html статична, неизменна(та которая пришла с сервера), а вся работа происходит с объектом типа DOM, который сформирован из структуры пришедшей страницы? |
Цитата:
Цитата:
|
Когда работаете на сервере, вы формируете текст)) а тут вы работаете уже с реальными объектами.. это всё таки разница..
Скачайте firebug и радуйтесь жизни) |
Уже радуюсь)): языку, firebug и вашей помощи))
Большое спасибо! |
Да, JavaScript очень хороший язык :)
|
Цитата:
Представьте, есть элемент разметки, обособленная часть текста <body class="index" myAttribute="foo"></body> C точки зрения разметки это элемент, вещь в себе, которая позволяет бразуеру обращаться с ней как с чем-то законченным и конкретным. И чисто формально у этого элемента есть два аттрибута, class и myAttribute, которые на что-то так когда-то влияют или не влияют. А теперь нам нужно получить этот элемент в javascript. Для его представления мы используем объект типа Element. Он предоставляет возможности доступа и редактирования аттрибутов элемента, но сам им не является. Хоть он и связан с элементом HTML, он — объект среды javascript. И «ничто объектное ему не чуждо», у него могут быть свойства. Было бы безумно удобно, если бы поддерживалась автоматически, браузером, связь «свойство объекта — аттрибут элемента». И, более того, это так и есть, но только для тех аттрибутов, которые известны браузеру. То есть, задав объекту свойство title, мы можем ожидать, что у элемента появится (изменится) аттрибут title. А, вот, аттрибут myAttribute вря-яд ли сгенерирует свойство myElement. И наоборот, задавая объекту свойство myProperty, мы не вправе ждать, что у элемента непременно появится такой параметр. Обратите на это внимание и не забывайте. Кстати, о не-тождественности «аттрибут элемента разметки — свойство объекта javascript» может еще говорить то, что аттрибут class представляется в виде свойства .className. __________ «элемент типа Element» не следует понимать буквально, в js нет классов как таковых. Но, так или иначе, прототип от функции-конструктора Element есть в цепи прототипов объекта. Везде, кроме IE6. Но это уже совсем другая история. |
Часовой пояс GMT +3, время: 23:11. |