27. juli 2004 - 14:56
Der er
15 kommentarer og 1 løsning
check bestemt radiobotton i radiobotton gruppe
Jeg har en række gruppe af af radiokanpper der bliver genereres dynamisk. Hver gruppe indeholder 3 radioknapper - alle tre knapper i samme gruppe har samme navn. Jeg ved at der altid er 8 formfelter før rækken af grupper starter. Mit problem er nu hvordan jeg gennemløber alle grupperne af radiokanpper, og markere knap to i hver gruppe.
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
<html> <head> <title> ... </title> <meta name="Generator" content="Human intelligence"> </head> <SCRIPT LANGUAGE="JavaScript"> <!-- function marker(f) { g=""; for (i=0;i<f.elements.length;i++) { if (f.elements[i].type=="radio") { if (g==f.elements[i].name) { f.elements[i].checked=true; g=""; } else { g=f.elements[i].name; } } } } //--> </SCRIPT> <body onload="marker(document.f)"> <form name="f"> <input type="radio" name="n1" value="1"> <input type="radio" name="n1" value="2"> <input type="radio" name="n1" value="3"><br> <input type="radio" name="n2" value="1"> <input type="radio" name="n2" value="2"> <input type="radio" name="n2" value="3"><br> <input type="radio" name="n3" value="1"> <input type="radio" name="n3" value="2"> <input type="radio" name="n3" value="3"><br> </form> </body> </html>
<script type="text/javascript"> function checkSecond(){ e = document.FORMNAVN.elements,prev = null,lastChecked; for(i=0;e.length>i;i++){ if(e[i].type=="radio"){ if(prev&&e[i].name==prev){ e[i].checked = true; lastChecked = e[i].name; prev = null; }else{ prev = e[i].name; } } } } </script> -- som vil markere den anden i hver gruppe på 3, og hver anden i grupper i større antal !-)
Men skal vi ikke generalisere lidt: <SCRIPT LANGUAGE="JavaScript"> <!-- function marker(f,n) { count=1;gammel=""; for (i=0;i<f.elements.length;i++) { if (f.elements[i].type=="radio") { if (gammel==f.elements[i].name) { count++; } else { gammel=f.elements[i].name; count=1; } if (count==n) f.elements[i].checked=true; } } } //--> </SCRIPT> <body onload="marker(document.f,3)"> <form name="f"> <input type="radio" name="n1" value="1"> <input type="radio" name="n1" value="2"> <input type="radio" name="n1" value="3"><br> <input type="radio" name="n2" value="1"> <input type="radio" name="n2" value="2"> <input type="radio" name="n2" value="3"><br> <input type="radio" name="n3" value="1"> <input type="radio" name="n3" value="2"> <input type="radio" name="n3" value="3"><br>
Jepz, det er præcis samme metode, med den samme lille uheldighed ved flere end 3 i gruppen ... -- men det klarer din anden, jeg havde forberedt den med lastChecked ... -- men det ville kun klare det med ikke at komme til at checke mere end een ... -- mens din nye checker præcis den, som man kalder på !-)
Jeg forstår ikke helt dine sidste 3 pinde - det er også ligemeget. Men du mener jo ikke "hver anden i grupper i større antal" ... ikke radioknapper ;))
Det er mogle gode forslag, men jeg har måske udtrykt mig lidt forkert. Hvis jeg har de 3x3 radiobuttons og gerne vil markere n2 med værdien 2 af, hvad skriver jeg så? Hvis jeg skriver f.elements[i].checked=true; så markeres den button med værdi 3 automatisk! Kan jeg ikke definerer hvilken af de tre buttons i hver gruppe der skal tjekkes af?
kan man skrive noget i retningen af form.n + i +[1] hvor i er nummeret på gruppen, og [1] er nummeret i gruppen??
Jeg har vist ikke forstået hvad du vil ;)
28. juli 2004 - 01:37
#10
Både eriks og mit forslag markerer den anden i gruppen ?-) Hvilket ret præcist er hvad du spurgte efter ...
28. juli 2004 - 09:02
#11
Jeg fandt en løsning udfra det i har skrevet, og fandt frem til det jeg skulle bruge. Løsningen blev således: <html> <head> <title> ... </title> <meta name="Generator" content="Human intelligence"> </head> <SCRIPT LANGUAGE="JavaScript"> <!-- function marking(f,radio_name,radio_value) { for(i=0;i<f.elements.length;i++) { if(f.elements[i].type=="radio" && f.elements[i].name==radio_name && f.elements[i].value==radio_value) f.elements[i].checked=true; } } function test() { marking(document.f,'n1',1); marking(document.f,'n2',2); marking(document.f,'n3',3); } //--> </SCRIPT> <body onload="test()"> <form name="f"> <input type="radio" name="n1" value="1"> <input type="radio" name="n1" value="2"> <input type="radio" name="n1" value="3"><br> <input type="radio" name="n2" value="1"> <input type="radio" name="n2" value="2"> <input type="radio" name="n2" value="3"><br> <input type="radio" name="n3" value="1"> <input type="radio" name="n3" value="2"> <input type="radio" name="n3" value="3"><br> </form> </body> </html> I må gerne begge lave et svar, da jeg nok har lært lidt af begge jeres eksempler.
28. juli 2004 - 09:51
#12
Du kan principielt nøjes med: function marking(f,radio_name,radio_value) { var g=f.elements[radio_name]; for(i=0;i<g.length;i++) { if( g[i].value==radio_value) g[i].checked=true; } }
28. juli 2004 - 09:52
#13
Eller endda en anelse hurtigere (formentlig): function marking(f,radio_name,radio_value) { var g=f.elements[radio_name]; for(i=0;i<g.length;i++) { if( g[i].value==radio_value) { g[i].checked=true; break; } } } PS: Ingen point til mig tak, jeg samler ikke på dem.
11. august 2004 - 12:46
#14
roenving laver du et svar, så får du alle poitne
11. august 2004 - 12:48
#15
Oki '-)
11. august 2004 - 13:03
#16
-- og tak for point ;~}
Vi tilbyder markedets bedste kurser inden for webudvikling