Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.03.2010, 21:55
Профессор
Отправить личное сообщение для Артем125 Посмотреть профиль Найти все сообщения от Артем125
 
Регистрация: 01.10.2009
Сообщений: 158

setAttribute неясность
Здравствуйте

Только начал изучать js и потому такой вопрос)

Если мы в js устанавливаем свойство(или атрибут, пока разницы не понимаю) для тега <body>. Должен ли он появиться у тега при формировании страницы или он существует только в самой программе js?

<html>
    <head>
    </head>
    <body id="MyProperty">

<script>
var e = document.getElementById('MyProperty');
e.setAttribute('clai', 'link');
</script>

    </body>
</html>



Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 24.03.2010, 22:01
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Артем125
устанавливаем свойство(или атрибут, пока разницы не понимаю)
Устанавливайте всегда свойства.

Сообщение от Артем125
Должен ли он появиться у тега при формировании страницы или он существует только в самой программе js?
А что значит появиться? View source показывает то, что пришло с сервера. Если innerHTML смотреть, то какие-то атрибуты/свойства появляются, какие-то нет.
Ответить с цитированием
  #3 (permalink)  
Старый 24.03.2010, 22:18
Профессор
Отправить личное сообщение для Артем125 Посмотреть профиль Найти все сообщения от Артем125
 
Регистрация: 01.10.2009
Сообщений: 158

Попробовал тот же код сгенерировать на локальном сервере и у тега <body> атрибут так и не добавился к перечню свойств

что требовалось:

до того, как был добавлен код на js, тег body в бокументе имел следующий вид <body id="MyProperty">
после скрипта я думал получить <body id="MyProperty" clai="link">

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

Последний раз редактировалось Артем125, 24.03.2010 в 22:40.
Ответить с цитированием
  #4 (permalink)  
Старый 24.03.2010, 22:48
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Если вы смотрите исходник страницы, то вы не увидите там никаких следов работы JS, т.к. браузер показывает то, что пришло с сервера. А с сервера у вас пришло без этого атрибута.
А какая собственно разница, добавляется что-то в тег или нет?
Ответить с цитированием
  #5 (permalink)  
Старый 24.03.2010, 22:55
Профессор
Отправить личное сообщение для Артем125 Посмотреть профиль Найти все сообщения от Артем125
 
Регистрация: 01.10.2009
Сообщений: 158

Ну просто я пришел в js из с и php и пытаюсь найти общие закономерности да и разобраться с языком)

И что же получается, что страница в html статична, неизменна(та которая пришла с сервера), а вся работа происходит с объектом типа DOM, который сформирован из структуры пришедшей страницы?

Последний раз редактировалось Артем125, 24.03.2010 в 23:00.
Ответить с цитированием
  #6 (permalink)  
Старый 24.03.2010, 23:08
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Артем125
Ну просто я пришел в js из с и php и пытаюсь найти общие закономерности да и разобраться с языком)
Не надо искать общие закономерности, они только в синтаксисе, семантика у языков разная.

Сообщение от Артем125
И что же получается, что страница в html статична, неизменна(та которая пришла с сервера), а вся работа происходит с объектом типа DOM, который сформирован из структуры пришедшей страницы?
Типа того. Не со строкой html же работать.
Ответить с цитированием
  #7 (permalink)  
Старый 24.03.2010, 23:14
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Когда работаете на сервере, вы формируете текст)) а тут вы работаете уже с реальными объектами.. это всё таки разница..
Скачайте firebug и радуйтесь жизни)
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #8 (permalink)  
Старый 24.03.2010, 23:17
Профессор
Отправить личное сообщение для Артем125 Посмотреть профиль Найти все сообщения от Артем125
 
Регистрация: 01.10.2009
Сообщений: 158

Уже радуюсь)): языку, firebug и вашей помощи))

Большое спасибо!

Последний раз редактировалось Артем125, 24.03.2010 в 23:20.
Ответить с цитированием
  #9 (permalink)  
Старый 24.03.2010, 23:29
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Да, JavaScript очень хороший язык
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #10 (permalink)  
Старый 24.03.2010, 23:57
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Сообщение от Артем125
свойство(или атрибут, пока разницы не понимаю)
Это разные вещи. возможно, это поможет Вам в прояснении ситуации. (Хотя, мои разъяснения обычно ясностью-то и не отличаются ).

Представьте, есть элемент разметки, обособленная часть текста
<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. Но это уже совсем другая история.

Последний раз редактировалось subzey, 25.03.2010 в 00:07.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
setAttribute, removeAttribute Cinic Events/DOM/Window 7 28.07.2009 17:31
проблема с createElement и setAttribute Олег 1987 Общие вопросы Javascript 1 23.11.2008 00:56
setAttribute dont work in IE7 february Events/DOM/Window 4 14.08.2008 19:51
setAttribute() Systemnik Events/DOM/Window 11 19.06.2008 09:02