Avatar billede karsten_larsen Praktikant
26. september 2013 - 12:09 Der er 2 kommentarer og
1 løsning

Vælge bestemte radiobutton via Loop trough

Har set mig blind på at skulle sætte forskellige radioknapper i forskellige grupper som true, men det lykkes ikke.

Følgende radiobutton burde blive blive sat som true:
- Radio11
- Radio23
- Radio36

Her følger script
        function StartUp2() {
            var Grupper = "gruppe1,gruppe2,gruppe3";
            var GrupperSplit = Grupper.split(",");
     
            var GruppeResultat = "1,3,6";
            var GruppeResultatSplit = GruppeResultat.split(",");
           
            for (x in GrupperSplit) {
                for (var i = 0; i < document.getElementsByTagName(x).length; i++) {
                    if (document.getElementsByTagName(x)[i].id == "Radio" + i + GruppeResultat(x)) {
                        document.getElementsByTagName(x)[i].checked = true;
                    } else {
                        document.getElementsByTagName(x)[i].checked = false;
                    }
                }
            }
        }

og html
<br />Gruppe 1 <br />
    <input id="Radio11" type="radio" name="gruppe1" value="1" runat="server" />
    <input id="Radio12" type="radio" name="gruppe1" value="2" runat="server" />
    <input id="Radio13" type="radio" name="gruppe1" value="3" runat="server" />
    <input id="Radio14" type="radio" name="gruppe1" value="4" runat="server" />
    <input id="Radio15" type="radio" name="gruppe1" value="5" runat="server" />
    <input id="Radio16" type="radio" name="gruppe1" value="6" runat="server" />
    <br />Gruppe 2 <br />
    <input id="Radio21" type="radio" name="gruppe2" value="1" runat="server" />
    <input id="Radio22" type="radio" name="gruppe2" value="2" runat="server" />
    <input id="Radio23" type="radio" name="gruppe2" value="3" runat="server" />
    <input id="Radio24" type="radio" name="gruppe2" value="4" runat="server" />
    <input id="Radio25" type="radio" name="gruppe2" value="5" runat="server" />
    <input id="Radio26" type="radio" name="gruppe2" value="6" runat="server" />
    <br />Gruppe 3 <br />
    <input id="Radio31" type="radio" name="gruppe3" value="1" runat="server" />
    <input id="Radio32" type="radio" name="gruppe3" value="2" runat="server" />
    <input id="Radio33" type="radio" name="gruppe3" value="3" runat="server" />
    <input id="Radio34" type="radio" name="gruppe3" value="4" runat="server" />
    <input id="Radio35" type="radio" name="gruppe3" value="5" runat="server" />
    <input id="Radio36" type="radio" name="gruppe3" value="6" runat="server" />


???:o) karsten_larsen
Avatar billede MadsHaupt Juniormester
27. september 2013 - 13:34 #1
Det kan kun lased gøre at selecte en radiobox af gangen, hvis du vil selecte flere af gangen så skal du bruge en checkbox.
Avatar billede karsten_larsen Praktikant
12. marts 2015 - 13:02 #2
-> Mads - vil du lave et svar?
Avatar billede MadsHaupt Juniormester
12. marts 2015 - 15:21 #3
Ja, selvfølge. 

For det første er jeg ikke sikker på at "for (x in GrupperSplit) {" understøttes i javascript, brug i stedet "for (var x=0; x<GrupperSplit.length; x++) {".

For det andet har variablen GrupperSplit værdien "['gruppe1', 'gruppe2', 'gruppe3']", så x har dermed værdierne 'gruppe1', 'gruppe2' og 'gruppe3'.

Så kan jeg se at du bruger funktionen document.getElementsByTagName, men der er ingen tags med tagnavnet 'gruppe1', 'gruppe2' eller 'gruppe3'.
Dine tags har jo tagnavnet "input", så brug i stedet funktionen document.getElementsByName.
Som vil finde elementer via deres attribute "name".

Jeg kan så også se at du laver et for loop inde i det første for loop, som gennemgår alle radio knapperne.

Inde i det loop bruger du "GruppeResultat(x)", men GruppeResultat er ikke en funktion, så det resultere i en fejl.
Selv hvis du bruger "GruppeResultat[x]", vil det også resultere i en fejl, da x er en streng, som jo ikke er et gyldigt index.

Jeg forslår at du fjerner alt inde i det første for loop, og erstatter det med "document.getElementsByName(GruppeSplit[x])[0].checked = true;"

Så kommer scriptet til at se sådan her ud:
function StartUp2() {
var Grupper = "gruppe1,gruppe2,gruppe3";
var GrupperSplit = Grupper.split(",");

for (x=0;x<GrupperSplit.length;x++) {
document.getElementsByName(GrupperSplit[x])[0].checked = true;
}
}


Det bør virke.
Og husk at "document.getElementsByName" returnere et array af elementer.

:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester