Obtenir les valeurs des zones de texte en Javascript

J'ai ce code html:

<table border="" cellpadding="3" cellspacing="0" id="mytable"> <tbody><tr><td>Song:</td> <td><input type="text" name="song" maxlength="64" size="48" /> </td></tr> <tr><td>Artist:</td> <td><input type="text" name="artist" maxlength="16" size="48" /> </td></tr> 

Comment puis-je obtenir les valeurs de "chanson" et "artiste"? J'ai essayé:

 var elTableCells = mytable.getElementsByTagName("td"); alert(elTableCells[2].value); alert(elTableCells[4].value); 

Mais je continue à être "indéfini" même s'il y a du texte dans la zone de texte

Tout d'abord, les éléments td n'ont pas d'attribut de value , alors l'appel. La .value sur eux ne fera rien. Deuxièmement, la valeur est effectivement sur l'élément de input , donc vous devez faire mytable.getElementsByTagName('input') place. Encore mieux serait de donner vos identifiants de champs de saisie, puis utiliser getElementById . Cela signifierait que vous pourriez modifier votre HTML sans votre rupture JS.

Le tagName qui est pertinent ici est "input", pas td. Cela vous procurera ce que vous cherchez.

C'est presque un cliché sur StackOverflow, mais je vous suggère de jeter un oeil à JQuery. JQuery vous permet de traiter votre html comme une base de données et de l'interroger pour obtenir ce genre de choses. Si votre balisage était comme ceci:

 <input type="text" id="song" maxlength="64" size="48" /> 

Vous pourriez obtenir la valeur comme ceci:

 $("#id").value(); 

Si vous souhaitez obtenir la valeur de l'attribut maxlength, vous pouvez le faire:

 $("#id").attr("maxlength"); 

Beaucoup plus amusant que de creuser à travers des tableaux d'éléments.

 var song = document.getElementsByName("song").value; var artist = document.getElementsByName("artist").value; 

Télécharger jquery

 jQuery("input[name='song']").val() 

Pour tenter de résoudre l'argument ci-dessous. Cela peut être bas avec javascript simple comme ci-dessus, mais pour la simplicité et la standardisation croisée du navigateur, je recommande jQuery. C'est une bibliothèque largement utilisée et généralement fortement recommandée.

 alert(document.getElementsByName("song")[0].value); alert(document.getElementsByName("artist")[0].value);