[jQuery] Lijst van gekozen opties maken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • w00d
  • Registratie: Juni 2004
  • Laatst online: 14-09 22:14
Ik snap iets niet, waarschijnlijk onkunde van mij, maar misschien dat iemand me op het juiste pad kan wijzen.
Het gaat om een formulier welke enkel bestaat uit vragen met radiobuttons. Aan het einde wil ik een overzicht laten zien van de gemaakte keuzes, dus even alle geselecteerde radiobuttons langs en deze tonen. Vervolgens de bijhorende label opschrijven in het lijstje.

Als ik nu onderstaand script draai, vind het keurig alle radiobuttons (en dus labels) toont deze ook in de alert, maar enkel de laatste label blijft staan. Dit komt doordat hij iedere keer de <li> (lijst) item overschrijft en niet iedere keer een nieuwe <li> (lijst) toevoegt.

Als ik de documentatie van Jquery lees zou je toch zeggen dat .append iedere keer de waarde achteraan toevoegd en .html overscrhrijft het. Toch doe ik iets fout, maar wat?

PHP:
1
 <ul id="summary"></ul>


Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        function selectStep(i) {
            
            if (i == count - 1 ){
                //tel het aantal gechecked opties
                var checked = $(element).find("input:radio:checked");
                var count2 = checked.size();

                //Iedere optie in de lijst zetten
                checked.each(function(i) {
                    //this.id
                    $("#summary").html('');
                    var defaultValue = $('input[name=' + this.name + ']:checked').prev().html();
                    
                    $("#summary").append('<li>' + defaultValue + '</li>');

                        //test verschijnt keurig bij iedere optie
                    window.alert(defaultValue); 
                });
          }        
    }

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Misschien dat regel 11 er iets mee te maken heeft :?

JavaScript:
1
$("#summary").html(''); 
;)

Acties:
  • 0 Henk 'm!

  • Flowmo
  • Registratie: November 2002
  • Laatst online: 18-08 08:24
mithras schreef op donderdag 27 januari 2011 @ 10:03:
Misschien dat regel 11 er iets mee te maken heeft :?

JavaScript:
1
$("#summary").html(''); 
;)
Dat is het, die regel zorgt ervoor dat de html in die div geleegd wordt, aangezien er een lege string mee wordt gegeven. :)

Irritante foutjes, daar ben je soms een hele tijd naar aan het zoeken en dan is het zoiets simpels.

Edit: Even iets anders, zo te zien gebruik je die variabele count2 niet in dit scriptje, dus die kan er eigenlijk uit (tenzij die nog ergens in andere de code wordt gebruikt).

[ Voor 16% gewijzigd door Flowmo op 27-01-2011 10:08 ]


Acties:
  • 0 Henk 'm!

  • w00d
  • Registratie: Juni 2004
  • Laatst online: 14-09 22:14
doh, die is wel heel erg.... 8)7 Soms kan je echt een "uur" naar een stuk code kijken en het gewoon nog niet zien... Thnxs
Irritante foutjes, daar ben je soms een hele tijd naar aan het zoeken en dan is het zoiets simpels.
Dat bedoel ik ;)

[ Voor 35% gewijzigd door w00d op 27-01-2011 10:07 ]


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
w00d schreef op donderdag 27 januari 2011 @ 10:06:
doh, die is wel heel erg.... 8)7 Soms kan je echt een "uur" naar een stuk code kijken en het gewoon nog niet zien... Thnxs
Je moet niet kijken, maar aanpassingen doen die jou tonen wat er precies gebeurt.

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Verder wat dingen die ik altijd doe, die je als advies mee kan nemen:

De i gebruik je niet in de loop, je kan net zo goed dit doen:
JavaScript:
1
2
checked.each(function() {
});


Ik zou zelf voor een li gaan die ik in de DOM definieer, dan html gaan injecteren, maar dat is écht persoonlijke voorkeur:
JavaScript:
1
$("#summary").append($("<li>").text(label));


Je kan ook zonder irritante popup'jes debuggen, door console.log te gebruiken. Als je met Firefox + Firebug werkt, kan je in de console netjes hele variabelen (en ook objecten!) bekijken:
JavaScript:
1
console.log(myVar);


offtopic:
En wat had dit met php te maken?

[ Voor 3% gewijzigd door mithras op 27-01-2011 10:17 ]


Acties:
  • 0 Henk 'm!

  • w00d
  • Registratie: Juni 2004
  • Laatst online: 14-09 22:14
Je moet niet kijken, maar aanpassingen doen die jou tonen wat er precies gebeurt.
Wat denk je zelf? Dat ik echt zit kijken...

@mithras, de i gebruik ik wel in de functie, heb hier enkel de relevante code gepost ;) en bedankt voor de tip van firefox / firebug, daar ga ik zeker even naar kijken.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

w00d schreef op donderdag 27 januari 2011 @ 10:51:
[...]


Wat denk je zelf? Dat ik echt zit kijken...
Nou ja, als je was begonnen met debuggen dan had je het wellicht zelf ook kunnen zien ;)
@mithras, de i gebruik ik wel in de functie, heb hier enkel de relevante code gepost ;) en bedankt voor de tip van firefox / firebug, daar ga ik zeker even naar kijken.
Dan nog is de vraag of je echt zo moet scopen (en al helemaal met count - 1 e.d. :)). Weet je zeker dat je mithras z'n tip niet beter ter harte kan nemen ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.

Pagina: 1