Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2013, 13:03   #1
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию Для чего нужна функция setAttribute

Немного не понимаю свойств (аттрибутов) объекта в javascript.
Почему я не могу написать element.href='http://example.com', а должен писать element.setAttribute('href','http://example.com') ?
Тогда когда можно писать просто element.аттрибут ?
hon вне форума Ответить с цитированием
Старый 04.06.2013, 14:57   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
element.href
Этак не ко всем атрибутам тега можно получить доступ. Если не ошибаюсь это зависит от самой системы DOM.
А вот setAttribute уже работает со всеми, даже самыми неизвестными.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2013, 16:21   #3
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Спасибо...
hon вне форума Ответить с цитированием
Старый 04.06.2013, 16:38   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Тогда когда можно писать просто element.аттрибут ?
это свойство, а не атрибут. это несколько разные вещи.
eval вне форума Ответить с цитированием
Старый 05.06.2013, 21:37   #5
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
это свойство, а не атрибут. это несколько разные вещи.
Поддержу... изменение атрибута как свойства не всегда даст нужный эффект... иногда он просто изменится доме, а работать как измененный не будет...
Лучше использовать специально обученные методы, не нужно полагаться на случай, действуйте по спецификации.
Та же фишка, как в древности (ИЕ5.5, 6) обращались к элементам по имени
Код:
<div name="qwe">&nbsp;</div>
<script>
qwe.innerHTML = 'hello world';
</script>
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 06.06.2013, 02:20   #6
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Да, IE конечно это большая головная боль. Нужно чтобы сайт хоть как-нибудь в нем отображался, а ведь иногда даже верстка ползет. IE6 даже сайт корпорации зла отображает с наползаниями одного элемента ка другой.
hon вне форума Ответить с цитированием
Старый 06.06.2013, 02:26   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от hon Посмотреть сообщение
Да, IE конечно это большая головная боль. Нужно чтобы сайт хоть как-нибудь в нем отображался, а ведь иногда даже верстка ползет. IE6 даже сайт корпорации зла отображает с наползаниями одного элемента ка другой.
ИЕ6 как бы уже давно устарел.
мы на наших сайтах от его поддержки отказались.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.06.2013, 19:36   #8
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Цитата:
Сообщение от Naive Посмотреть сообщение
Та же фишка, как в древности (ИЕ5.5, 6) обращались к элементам по имени
Код:
<div name="qwe">&nbsp;</div>
<script>
qwe.innerHTML = 'hello world';
</script>
Я даже древний урок по обращению через name видел: http://lexwebmaster.narod.ru/java/JavaScript/les29.htm

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
мы на наших сайтах от его поддержки отказались.
Кто мы и что за наши сайты?
hon вне форума Ответить с цитированием
Старый 07.06.2013, 22:54   #9
lux16
Форумчанин
 
Аватар для lux16
 
Регистрация: 11.02.2009
Сообщений: 305
По умолчанию

Давайте я попробую прояснить ситуацию. Хоть много кто со мной не согласиться, но JS это объектный язык, и все в нем является обьектом, даже массив и даже строка, а именно тип массива и сточный тип. Ну так вот есть тип элементов дом, например
Код:
div = document.getElementsByClassName('test-div');
Теперь в переменной div хранится массив выбранных объектов, как и в любом объектном языке у этих самых объектов есть методы и свойства, методы это что-то вроде такого div.indexOf(), а свойства что-то вроде этого div.length, так вот атрибуты элемента DOM (href, rel, src) не являются точными копиями свойств объектов, а значит не все они присутствуют. А метод setAttribute() как и служит для установление значение этих атрибутов

Поправьте, если в чем-то не прав
Хочу быть лучшим, но пока что я только обычный =(
lux16 вне форума Ответить с цитированием
Старый 08.06.2013, 01:10   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

атрибуты это атрибуты а свойства - свойства, разные сущности
некоторые свойства сделаны для доступа к атрибутам, и не более.
не все такие свойства совпадают по имени с именем атрибута, доступ к которому есть, например атрибут class, а свойство className
повторю - это разные сущности, ну и соответственно хранение и доступ разные
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для чего нужна каждая кодировка UTF-8? Darh Помощь студентам 0 26.12.2012 19:47
Для чего нужна библиотека PEAR Lexus_RX_300 PHP 3 28.04.2012 16:17
Нужна функция(Макрос) для вывода номеров и категорий в таблице alexp21 Microsoft Office Excel 4 26.09.2011 23:32
Нужна функция для ячеки в Excel resquimi Microsoft Office Excel 1 22.04.2011 23:08
Нужна функция для проигрывания MP3 EniSh Общие вопросы Delphi 6 29.06.2008 01:08