JQuery: une Boucle sur les éléments d'entrée
J'ai des rangées de boîtes de saisie (texte) que j'ai besoin de parcourir, en multipliant les valeurs à l'intérieur d'une ligne, puis en additionnant les produits. La seule solution que j'ai pu trouver est de convertir l'entrée des boîtes de tableaux:
var array1 = $('input[id$="txtVal1"]').toArray();
var array2 = $('input[id$="txtVal2"]').toArray();
var temp1;
var temp2;
var sum=0;
Et puis itérer et de la somme à l'aide de:
for (i = 0; i < array1.length; i++) {
if (array1[i].value.length > 0) { //make sure we have data
temp1 = parseFloat(array1[i].value);
temp2 = parseFloat(array2[i].value);
sum += temp1 * temp2;
}
}
Cela fonctionne. Cependant, je suis en train d'apprendre JQuery et que vous voulez utiliser la méthode canonique.
Vous pouvez aussi utiliser $.chacun().
$('tr').each(function(i, el){alert($(el).find('input[id$="txtVal1"]').val() * $(el).find('input[id$="txtVal2"]').val}))
OriginalL'auteur user2216179 | 2013-03-27
Vous devez vous connecter pour publier un commentaire.
vous pouvez faire une boucle directement sur tous les éléments trouvés par l'intermédiaire d'un sélecteur comme ceci:
Puisque c'est un exemple générique, je mentionne simplement de rendre le lecteur au courant de leur existence en tant que paramètres de la méthode each ().
OriginalL'auteur Gung Foo
Comme mentionné, vous pouvez utiliser .chacun() pour accomplir cette tâche, mais voici un exemple qui utilise vos données comme demandé dans la question. Vous avez mentionné "rangées" de l'entrée, donc je suis en supposant que c'est dans une ligne de tableau:
Voici un jsFiddle Exemple
Voici ce que j'ai essayé:
$('#divDataRow').each(function () { var $this = $(this); sum += parseFloat($this.find('input[id$="txtVal1"]').val()) * parseFloat($this.find('input[id$="txtVal2"]').val()); alert('sum: ' + sum); }); alert('sum: ' + sum);
Mais même si il y a au moins deux lignes, la somme est toujours le produit de la première ligne. (Désolé pour la mauvaise mise en forme, je n'ai pas lu les commentaires du guide, mais ne pouvait pas insérer des sauts de ligne...)Il ne devrait être qu'un #divDataRow (Id doit être unique), donc ça ne fonctionne pas. Si vous avez besoin de multiples utiliser un nom de classe. Et si vous rencontrez toujours des problèmes de poster un échantillon de votre code html et je peux vous donner une meilleure réponse. Ou de mettre à jour le jsFiddle et de publier la mise à jour de l'url.
OriginalL'auteur Syon
Il est inutile d'utiliser
toArray
, utilisez .chacun() méthode.hm... laissez-moi vérifier
il fonctionne très bien
OriginalL'auteur Denis O.