2010-08-06 7 views
0
function confirm_results(theform) { 

var inputsX = document.getElementById(theform).getElementsByTagName('textarea'); 
      for(var iX = 0, nX = inputsX.length - 1; iX < nX; iX++) 
      { 
      text += inputs[iX].innerHTML + ', '; 
      } 
return text; 
} 

Quelqu'un peut-il me dire pourquoi cela ne fonctionne pas? J'essaye de trouver tous les textarea à l'intérieur d'un DIV que je passe le nom et renvoyer le texte. Une raison pour laquelle ça ne fait rien.Impossible de faire fonctionner document.getElementById.getElementsByTagName

Répondre

1

innerHTML n'est pas la bonne façon de lire la valeur d'une zone de texte.

En partie à cause des < ou & caractères il sera HTML se sont échappés, mais surtout parce que le contenu du nœud de texte à l'intérieur d'un noeud HTMLTextAreaElement n'est pas une indication de la valeur actuelle de la zone de texte.

En fait, le contenu du nœud de texte est le contenu original de la zone de texte telle que vue dans la source HTML. C'est la même chose que la propriété defaultValue. Il n'est pas mis à jour lorsque vous tapez dans la zone de texte ... sauf dans IE qui, comme d'habitude, se trompe complètement. Vous souhaitez probablement utiliser inputs[iX].value à la place.

va de même pour les entrées normales, où input.value représente la valeur actuelle, mais input.getAttribute('value') est le même que input.defaultValue, ce qui représente la valeur d'origine mis dans l'attribut value="..." dans la source HTML. Encore une fois: sauf dans IE en raison de plus de bugs.

Le même nouveau pour les checked et selected propriétés des cases à cocher et sélectionner des options: le checked et selectedattributs sont les valeurs d'origine reflétées dans les defaultChecked et defaultSelectedpropriétés.

De plus, avec le length-1, vous ignorez la dernière zone de texte de la liste. Voulez-vous vraiment faire ça?

+0

entrées [iX] .value ne fonctionne pas .... – eqiz

+0

Fonctionne pour moi, après un exemple plus complet? (Note dans l'extrait posté jusqu'à présent, vous n'avez pas initialisé 'text' à' '' ', donc si vous exécutez tel quel sans code supplémentaire, vous obtiendrez une erreur lorsque vous essaierez de' text + = 'quoi que ce soit.) – bobince

Questions connexes