SetAttribute () ne fonctionne pas comme je l'espère

Cette ligne de code:

document.getElementById('01').getElementsByTagName("input")[0].setAttribute("value", "1"); 

Fonctionne parfaitement bien lorsque "input" n'a pas encore de valeur. Mais lorsque l'entrée a déjà une valeur, elle ne changerait pas la valeur. pourquoi donc?

On dirait que vous avez fait face à une différence confuse entre la value propriété d'élément et l'attribut de value . Ce ne sont pas les mêmes choses.

La chose est que l'attribut de valeur sert à la valeur par défaut, donc si l'élément possède déjà une valeur de propriété, la modification de l'attribut de valeur ne sera pas reflétée dans l'IU.

La documentation dit ceci :

L'utilisation de setAttribute () pour modifier certains attributs, notamment la valeur dans XUL, fonctionne de façon incohérente, car l'attribut spécifie la valeur par défaut. Pour accéder ou modifier les valeurs actuelles, vous devez utiliser les propriétés. Par exemple, utilisez elt.value au lieu de elt.setAttribute ('value', val).

Donc, pour démontrer cette situation, considérez cette petite démo:

 document.getElementById("01").getElementsByTagName("input")[0].value = 'property set'; document.getElementById("01").getElementsByTagName("input")[0].setAttribute("value", "two"); 
 <div id="01"> <input type="text" /> </div> 

Que JavaScript modifie absolument la valeur de la <input> lorsque la balise a déjà un attribut de value . Voyez vous-même ici: http://jsfiddle.net/qg7d4m32/

Pour le champ de saisie si vous souhaitez définir une valeur, utilisez simplement la valeur

Javascript pur:

 document.getElementById('01').getElementsByTagName("input")[0].value = "value" 

JQuery:

  $("input").val("value")