Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.01.2016, 13:11
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

Почему НЕ все атрибуты тега доступны как свойства соответствующего объекта?
Допустим есть некий элемент div:
<div id='divID' name='myDiv' myAttr='some volume'>Мой див :)</div>

В коде получаем соответствующий ему объект:
var myDiv = document.getElementById("divID");

Почему у этого объекта (myDiv) некоторые свойства доступны и соответствуют атрибутам элемента, например:
console.log( myDiv.id );           // выводит  divID
console.log( myDiv.innerHTML );    // выводит  Мой див :)

А свойство name не доступно:
console.log( myDiv.name );         // выводит undefined

C myAttr вроде понятно - доступ к нему только через myDiv.getAttribute( "myAttr" ).
Но почему name не доступно как свойство myDiv.name ?
Ответить с цитированием
  #2 (permalink)  
Старый 10.01.2016, 13:28
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Keramet,

name - не универсальный атрибут, он имеет смысл только для якорей и элементов формы. Потому для прочих тегов он "не подхватывается" в свойства объекта.
Ответить с цитированием
  #3 (permalink)  
Старый 10.01.2016, 14:08
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

Сообщение от Яростный Меч Посмотреть сообщение
Keramet,

name - не универсальный атрибут, он имеет смысл только для якорей и элементов формы. Потому для прочих тегов он "не подхватывается" в свойства объекта.
А как понять, что атрибут - универсальный? Разве name не присутствует во всех тегах? или признак "уникальности" в чём-то другом?
Ответить с цитированием
  #4 (permalink)  
Старый 10.01.2016, 14:21
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Сообщение от Keramet Посмотреть сообщение
А как понять, что атрибут - универсальный? Разве name не присутствует во всех тегах? или признак "уникальности" в чём-то другом?
вот список универсальных
http://htmlbook.ru/html/attr/common
Ответить с цитированием
  #5 (permalink)  
Старый 10.01.2016, 14:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

http://www.w3schools.com/tags/ref_st...attributes.asp

Атрибут name для тега А не поддерживается в HTML5.
Ответить с цитированием
  #6 (permalink)  
Старый 10.01.2016, 15:10
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Keramet, только валидные атрибуты могут быть доступны как свойства, но у них тоже есть некоторые особенности, например: атрибут класс не будет доступен как свойство "class", так как это зарезервированное имя, поэтому необходимо указывать className, или такие свойства как disabled, checked и т.д. всегда будут возвращать булево значение, независимо от значения атрибута.

У дивов name не бывает, поэтому и не работает, так как это не валидно. Лучше использовать data-* атрибуты:

<div id="myDiv" data-name="foo"></div>

myDiv.dataset.name; //foo


Ну или написать свой геттер/сеттер:

Object.defineProperty(HTMLDivElement.prototype, 'name', {
   get: function() {
      return this.getAttribute('name') || '';
   },
   set: function(value) {
      this.setAttribute('name', value);
   }
});


<div id="myDiv" name="foo"></div>

myDiv.name; //foo
Ответить с цитированием
  #7 (permalink)  
Старый 10.01.2016, 18:39
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

Ruslan_xDD,
спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить все атрибуты всех инпутов shaltay jQuery 10 19.05.2017 15:07
Название ячейки таблицы Questioner Общие вопросы Javascript 6 16.02.2011 09:58
Как получить все атрибуты ноды? Victor_85 Events/DOM/Window 1 12.04.2010 17:58
как просмотреть все подобъекты объекта egg Я не знаю javascript 10 01.06.2009 20:14
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37