12
votes

Jquery array.push () ne fonctionne pas

J'ai essayé d'ajouter des variables à partir d'une liste déroulante dans un tableau à l'aide de la fonction JQuery Array.Push () mais pour une raison quelconque, cela ne fonctionne pas. Voici la liaison Jsfiddle: http://jsfiddle.net/dkwnb/3/

JavaScript: < Pré> xxx

html xxx


4 commentaires

Que devrait-il faire? Parce que c'est ici exactement ce qu'il semble faire.


Juste une note: Toujours déclarer des tableaux de cette façon var myarray = [];


@Mat. Longue histoire courte, tout peut être ré-défini dans JavaScript, de sorte que tableau () . Utilisation de [] Garantie Vous aurez une matrice. Ceci est également plus efficace. Cochez cette case Répondre qui l'explique assez clairement.


Pour l'enregistrement, la méthode .PUSH () est indigène JavaScript et n'a rien à voir avec JQuery.


3 Réponses :


6
votes

Votre code alerte la valeur actuelle de la liste déroulante pour moi, montrant qu'elle a correctement poussé dans la matrice.

Voulez-vous conserver les valeurs anciennes et ajouter? Vous recréez la matrice à chaque fois, ce qui signifie que l'ancienne valeur est classée.

Voici un code mis à jour: xxx

jsfiddle


0 commentaires

25
votes

Votre HTML devrait inclure des guillemets pour les attributs: http://jsfiddle.net/dkwnb/4/ < / Strike>

Non requis lors de l'utilisation d'un HTML5 DOCTYPE - merci @bazmegakapa

Vous créez la matrice à chaque fois et ajoutez une valeur à son travail comme prévu?

Déplacement de la matrice en dehors de la fonction Live () fonctionne bien: xxx

http: //jsfiddle.net/dkwnb/5/

Notez également que dans les versions ultérieures de JQuery V1.7 -> la méthode Live () est obsolète et remplacée par le On () Méthode.


2 commentaires

Il utilise un doctype HTML5. Il n'est pas obligatoire d'utiliser des citations autour des valeurs d'attribut.


@bazmegakapa ok comprise - j'ai appris quelque chose là-bas - Répondre mis à jour



3
votes

Une autre solution de contournement:

var vpp = [];
var incr=0;
$('.prsn').each(function(idx) {
   if (this.checked) {
       var p=$('.pp').eq(idx).val();
       vpp[incr]=(p);
       incr++;
   }
});
//do what ever with vpp array;


0 commentaires