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