Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.10.2010, 15:36
Кандидат Javascript-наук
Отправить личное сообщение для TicTac Посмотреть профиль Найти все сообщения от TicTac
 
Регистрация: 07.09.2010
Сообщений: 133

Атрибуты и свойства
Здравствуйте!
Почитал про атрибуты и свойства и не могу ни как уловить разницу.

Читал
http://javascript.ru/tutorial/dom/attributes
и
http://xpoint.ru/know-how/JavaScript/Atributyi?8

Не совсем понимаю вот что..

Что такое свойство, а что такое атрибут.

1.
inputTag.setAttribute("type", "abrakadabra");     // присваиваем атрибуту недопустимое значение
alert(inputTag.getAttribute("type"));             // показывает: abrakadabra
alert(inputTag.type);                             // показывает: text


Это хорошо показывает разницу атрибута и свойства: атрибут может быть любой строкой, он лишь показывает, что написано в исходном коде документа. Свойства же отображают текущее состояние тега, они не могут содержать недопустимых значений.


-Свойства же отображают текущее состояние тега
свойство это type='submit' вся запись или только 'submit'?


2. Если взять такую запись

type='submit' - это будет и свойством и атрибутом, только это как бы так:
type='submit' -свойство
type='submit' - атрибут

но браузер пытается синхронизировать это дело и выходит type='submit' - это и свойство и атрибут, то есть если изменить одно изменится второе, только почему иногда бывают случаи когда свойство и атрибут имеют разные значения

3. Если рассмотреть такую запись
myAtr='myValue'
тогда это только атрибут, так как свойства четко не могут быть любой пользовательской строкой. Верно?
такого свойства myAtr='myValue' нет?


Я запутался(
Ответить с цитированием
  #2 (permalink)  
Старый 07.10.2010, 15:53
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Забудь про это - это на самом деле не важно Используй все время свойства - в большинстве случаев это правильнее. А со временем все поймешь.
Ответить с цитированием
  #3 (permalink)  
Старый 07.10.2010, 16:52
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Браузер синхронизирует только те свойства с атрибутами, которые знает. Для выдуманных пользователем атрибутов тегов не создаются одноименные свойства DOM-объектов, поэтому совсем забыть о getAttribute не получиться.
Ответить с цитированием
  #4 (permalink)  
Старый 08.10.2010, 00:23
Кандидат Javascript-наук
Отправить личное сообщение для TicTac Посмотреть профиль Найти все сообщения от TicTac
 
Регистрация: 07.09.2010
Сообщений: 133

Мне кажется я догнал! Что тут не понятного атрибуты тегов и муляж этих атрибутов - свойства полученные при полощи синхронизации браузера. Надеюсь правильно понял

Теперь меня долбит вопрос, если создать атрибут появится свойство...
А если добавить свойство - атрибут естественно не появится.?

Цитата:
Используй все время свойства - в большинстве случаев это правильнее.
намек понял почему, спс помогло!

Цитата:
Браузер синхронизирует только те свойства с атрибутами, которые знает. Для выдуманных пользователем атрибутов тегов не создаются одноименные свойства DOM-объектов, поэтому совсем забыть о getAttribute не получиться.
спс, помогло!

Илья тоже описал в статье, что-то я протупил
Цитата:
Для "левых" атрибутов браузер ничего не гарантирует

хм, я уже второй раз не могу поставить + в карму Sweet, пишет нужно добавить кому нить отзыв прежде чем снова добавить Sweet. Это баг?

Последний раз редактировалось TicTac, 08.10.2010 в 00:31.
Ответить с цитированием
  #5 (permalink)  
Старый 08.10.2010, 00:54
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от TicTac
если создать атрибут появится свойство...
не появится (кроме IE)
var node = document.createElement("div");
node.setAttribute("test", "O_o");
alert("test" in node);


Сообщение от TicTac
А если добавить свойство - атрибут естественно не появится
да
var node = document.createElement("div");
node.test = 1;
alert(node.hasAttribute("test"));


Повторюсь: если браузеру известно какое-то свойство или атрибут, то при изменении и добавлении, значения возможно синхронизируются:
var node = document.createElement("div");
node.setAttribute("id", "_123");
alert(node.id);

var node = document.createElement("div");
node.id = "_123";
alert(node.getAttribute("id"));


Еще полезно помнить, что node.cloneNode копирует только атрибуты:
var node = document.createElement("div");
node.test = "O_o";

var clone = node.cloneNode(true);
alert(clone.test);

var node = document.createElement("div");
node.setAttribute("test", "O_o");

var clone = node.cloneNode(true);
alert(clone.getAttribute("test"));


Ну и ключевое отличие: атрибут всегда имеет строковое значение, свойство может принимать любое значение.
var node = document.createElement("input");
node.type = "checkbox";
node.setAttribute("checked", "checked");
alert(node.checked);

Последний раз редактировалось Octane, 08.10.2010 в 01:07.
Ответить с цитированием
  #6 (permalink)  
Старый 08.10.2010, 01:19
Кандидат Javascript-наук
Отправить личное сообщение для TicTac Посмотреть профиль Найти все сообщения от TicTac
 
Регистрация: 07.09.2010
Сообщений: 133

Сообщение от Octane
Сообщение от TicTac
если создать атрибут появится свойство...
не появится (кроме IE)

1
var node = document.createElement("div");
2
node.setAttribute("test", "O_o");
3
alert("test" in node);
понятно про левые

спс еще раз! очень полезно четко и понятно
Ответить с цитированием
  #7 (permalink)  
Старый 15.04.2011, 02:35
Аватар для Андрей38
Профессор
Отправить личное сообщение для Андрей38 Посмотреть профиль Найти все сообщения от Андрей38
 
Регистрация: 11.12.2010
Сообщений: 261

Я по Квери хочу спросить . Правильная ли такая запись $('*[class=class1]||[id=id2]'). чтоб реалиазовать 'Или Тот, Толи Этот ?' Как это должно быть написанно правильно ?..И какие еще есть похожие арифмерические штучки ?
__________________
http://www.youtube.com/watch?feature...&v=cz0uN1ZNuM0
История не в теории ,а по факту
Ответить с цитированием
  #8 (permalink)  
Старый 15.04.2011, 08:48
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Андрей38
$('*[class=class1]||[id=id2]')
нет, тут все написано
Ответить с цитированием
  #9 (permalink)  
Старый 19.04.2011, 22:22
Аватар для Андрей38
Профессор
Отправить личное сообщение для Андрей38 Посмотреть профиль Найти все сообщения от Андрей38
 
Регистрация: 11.12.2010
Сообщений: 261

Сообщение от monolithed Посмотреть сообщение
нет, тут все написано
Спасибо ОГРОМНОЕ !А то я не мог никак сообразить какое именно слово втавить для поиска в Гугле
Это то , для чего оно мне нужно
http://www.youtube.com/watch?v=2y83ocW89ls
__________________
http://www.youtube.com/watch?feature...&v=cz0uN1ZNuM0
История не в теории ,а по факту

Последний раз редактировалось Андрей38, 19.04.2011 в 22:25.
Ответить с цитированием
  #10 (permalink)  
Старый 09.05.2011, 23:24
Аватар для Андрей38
Профессор
Отправить личное сообщение для Андрей38 Посмотреть профиль Найти все сообщения от Андрей38
 
Регистрация: 11.12.2010
Сообщений: 261

Я не могу сообразить . как выделить сиблингс- элементы которые НЕ имеют какого нибудь атрибута по отношению к ГРУППЕ элементоав ,наделенной одним И ТЕМ ЖЕ классом. В моем случае .как я уже сказал-это класс // hasAttr -есть такое в документации , а наоборот как сделать по типу hasNotClass ? If ($(this). hasAttr('xxx')){$(this).siblings().remove()} чо-то не сработало.. Подскажите пожайлуста,как провернуть такую вещь.
__________________
http://www.youtube.com/watch?feature...&v=cz0uN1ZNuM0
История не в теории ,а по факту

Последний раз редактировалось Андрей38, 10.05.2011 в 10:12.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как при чтении или записи свойства объекта вызывать функцию danik.js Общие вопросы Javascript 3 16.09.2010 17:57
получить значение свойства class у div Leax Events/DOM/Window 8 07.02.2010 20:00
jQuery & атрибуты & валидатор micscr jQuery 7 29.12.2009 13:37
функция должна возвращать объект без одного свойства blackzub Общие вопросы Javascript 4 14.12.2009 19:25
Атрибуты DontEnum ReadOnly kefi Общие вопросы Javascript 2 25.03.2009 00:07