2017-10-17 19 views
1

J'ai une simple application web avec un champ de saisie de texte dans ce qui ressemble à ceci:Quelle est la différence entre .getAttribute ("name") et .name?

<input id="txtip" type="text" value="10.1.1.50" /> 

L'adresse 10.1.1.50 est une valeur par défaut pour une adresse IP. Et de javascript je lirais comme ceci:

txtip.getAttribute("value") 

Maintenant, supposons que de le changer à 10.1.1.49. Dans Google Chrome qui précède code javascript renverrait encore 10.1.1.50, tandis que l'expression

txtip.value 

retours 10.1.1.49.

Quelle est la différence? Quelle est la bonne façon"?

+0

Pouvez-vous reproduire le problème à l'adresse stacksnippets? – guest271314

+0

'value' est un attribut de' input', c'est pourquoi vous pouvez y accéder via 'getAttribute' mais' value' est aussi une propriété du type de noeud 'input'. J'utiliserais 'txttip.value' – JohanP

Répondre

2

var el = document.getElementById('testBox'); 
 

 
$(document).focusout(function() { 
 
alert('el.value = ' + el.value); 
 
    alert('el.getAttribute("value") = ' + el.getAttribute('value')); 
 
    e.preventDefault(); 
 

 

 
});
<h2>Change value in the text box</h2> 
 

 

 
<input id="testBox" type="text" value="original value" /> 
 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

trouvé sur le Web pourrait vous aider à essayer de suivre le type de code quelque chose et focusOut

La différence est que element.value est temps réel et si un utilisateur change disons, un entrée de zone de texte, il reflète cela, et vous montrer la nouvelle valeur.

Alors que getAttribute ('value') affichera toujours la valeur d'origine = "whateverWasHere".

+0

Pas toujours, c'est un sac mélangé. Voir [* getAttribute() en fonction des propriétés de l'objet Element? *] (Https://stackoverflow.com/questions/10280250/getattribute-versus-element-object-properties) L'utilisation de jQuery dans votre réponse est inutile et porte atteinte à ce que vous Essayons de montrer. – RobG

+0

Merci pour le commentaire! –

+0

merci les gars, maintenant c'est clair – beddu