Разница между Element.value и Element.getAttribute («значение»)

Мне просто интересно, какая разница между ними. Я заметил, что два метода дают разные результаты время от времени.

Разница в том, что element.value – это реальное время, и если пользователь изменяет, скажем, ввод текстового поля, он будет отражать это и покажет вам новое значение.

В то время как getAttribute('value') все равно будет показывать исходное value="whateverWasHere" .

jsFiddle DEMO

.value не сопоставляется ни с каким атрибутом.

.defaultValue отображает атрибут "value" . Поэтому, когда вы говорите elem.getAttribute("value") , это то же самое, что и elem.defaultValue .

Кроме того, .defaultValue отражает значение, когда вход нетронутый ( флаг грязного значения – false ). После того, как значение входа изменяется при взаимодействии с пользователем, это сопоставление прекращается. Пока вход не тронут, вы можете изменить .defaultValue (и, таким образом, .setAttribute("value") ) и увидеть, что он также изменяет значение. Не то, чтобы это было практически полезным, но интересным кусочком мелочей.