в форме, form.name
будет обычно возвращает имя формы, но не , если форма имеет элемент с именем "name"
var f = document.createElement('form');
f.hasAttribute('name'); // false
f.name = 'abc';
f.getAttribute('name'); // "abc"
var i = document.createElement('input');
i.name = 'name';
f.appendChild(i);
f.name; // HTMLInputItem
f.getAttribute('name') // "abc"
f.name = 'efg';
f.name; // HTMLInputItem
f.getAttribute('name') // "efg"
из этого упражнения кажется, что свойство FORM name
действительно является его атрибутом.
это поведение кардинально отличается от value
var i1 = document.createElement('input');
var i2 = document.createElement('input');
// test value
i1.setAttribute('value','value1');
i1.getAttribute('value'); // value1
i1.value = 'value2';
i1.getAttribute('value'); // value1
i2.value = 'value1';
i2.hasAttribute('value') // false
// test name
i.setAttribute('name','name1');
i.getAttribute('name'); // name1
i.name = 'name2';
i.getAttribute('name'); // name2
i2.name = 'name1';
i2.hasAttribute('name') // true
value
, использующего его атрибут какпо умолчанию, тогда как form.name
- это метод, который сначала пытается элементы, имеющие element.name='name'
, а затем использует attribute('name')