2012-08-15 8 views
9

Me pregunto cuál es la diferencia entre los dos. Me he dado cuenta de que los dos métodos dan resultados diferentes a veces.Diferencia entre Element.value y Element.getAttribute ("valor")

+0

posible duplicado de [Para usar getAttribute(), o no para usar getAttribute(): esa es la pregunta] (http://stackoverflow.com/questions/7278922/to-use-getattribute-or-not-to -use-getattribute-that-is-the-question) –

+1

Mientras [esta pregunta] (http://stackoverflow.com/questions/3953028/any-diffrence-between-element-setattribute-elementattr-element-attr) se refiere a establecer en lugar de obtener, la información puede ayudarlo. – j08691

+1

@ j08691 atributos que el mapa a las propiedades siempre refleja el valor actual de esa propiedad. – Esailija

Respuesta

17

La diferencia es que element.value es en tiempo real y si un usuario cambia, digamos una entrada de texto, lo reflejará y le mostrará el nuevo valor.

Mientras que getAttribute('value') seguirá mostrando el valor original de value="whateverWasHere".

jsFiddle DEMO

+2

esto explica el comportamiento que estoy viendo. Gracias :) – ama2

10

.value no se asigna a ningún atributo.

.defaultValue se asigna al atributo "value". Entonces, cuando dices elem.getAttribute("value") es lo mismo que elem.defaultValue.

Además, .defaultValue refleja .value cuando la entrada no se ha modificado (dirty value flag is false). Después de que la interacción del usuario cambia el valor de la entrada, esta asignación se detiene. Mientras la entrada no se modifique, puede cambiar .defaultValue (y por lo tanto .setAttribute("value")) y verlo cambiar .value también. No obstante, esto no es práctico pero es una interesante pieza de trivia.

+0

hmm No sabía que existe elem.defaultValue, gracias – ama2

+0

@ ama2 mi punto es que '.value' no es lo mismo que el atributo' "value" ', pero' .defaultValue' is. Esa es la razón, es un poco intuitivo. Considere http://jsfiddle.net/J9Mat/2/ – Esailija

+1

+1. Esta respuesta tiene los detalles importantes. –

Cuestiones relacionadas