| 
 Почему НЕ все атрибуты тега доступны как свойства соответствующего объекта? Допустим есть некий элемент 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 ? | 
| 
 Keramet, name - не универсальный атрибут, он имеет смысл только для якорей и элементов формы. Потому для прочих тегов он "не подхватывается" в свойства объекта. | 
| 
 Цитата: 
 | 
| 
 Цитата: 
 http://htmlbook.ru/html/attr/common | 
| 
 http://www.w3schools.com/tags/ref_st...attributes.asp Атрибут name для тега А не поддерживается в HTML5. | 
| 
 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 | 
| 
 Ruslan_xDD, спасибо | 
| Часовой пояс GMT +3, время: 15:06. |