Показать сообщение отдельно
  #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.
Ответить с цитированием