2010-09-30 8 views
1

je le code suivant:Undefined variable dans le tableau de prototype

<ul id="litemsd"> 
<li class="litemd"> 
    <input type="checkbox" id="d1" name="d1" /> 
    <label for="d1">Number One</label> 
</li> 
<li class="litemd"> 
    <input type="checkbox" id="d2" name="d2" /> 
    <label for="d2">Numer Two</label> 
</li> 
<li class="litemd"> 
    <input type="checkbox" id="d3" name="d3" /> 
    <label for="d3">Numer Three</label> 
</li> 
</ul> 

Et à l'intérieur soumettre de la forme d'observer la fonction que j'essaie de parcourir les cases à cocher sélectionnés

$$('li.litemd').pluck('checked').each(function(s) { 
    alert(s.next().innerHTML) 
}); 

Mais whe ce code est atteint, l'erreur suivante apparaît dans firebug:

"s is undefined" 

Des indices?

+0

vous devez poster ce que plumer ne – bevacqua

Répondre

0

Je pense que vous confondez les propriétés avec lesquelles pluck() travaille avec les attributs HTML. Il est de toute façon plus facile d'ajouter la classe pseudo de vérification dans le cadre du sélecteur initial, comme:

$$('li.litemd input:checked').each(function(s) { 
     alert(s.next().innerHTML); 
    }); 

Example

0
$$('li.litemd').pluck('checked').each(function() { 
    alert($$(this).next().innerHTML) 
}); 

?

+0

Nope, « $$ (this) .next est pas Fonction " – xain

0

.pluck() renvoie un tableau de valeurs (quel que soit le nom de la propriété que vous avez transmise), donc il ne filtre pas vos résultats aux checked, il renvoie littéralement un tableau [false, false, false].

Au lieu de cela, je pense que vous voulez ceci:

$$('li.litemd input').each(function(s) { 
    if(s.checked) alert(s.next().innerHTML) 
}); 

You can give it a try here, note l'ajout de input au sélecteur, puisque vous cheking sur la propriété du <input>intérieur le <li>, pas sur la <li> lui-même.

+0

Merci pour votre réponse. Pas d'erreur mais ne reconnaît pas les éléments cochés. – xain

+0

@xain - Cela devrait, comme dans la démo ... quel comportement obtenez-vous? –

Questions connexes