FAQ |
Kalender |
2008-01-06, 13:40 | #1 | ||
|
|||
Har WN som tidsfördriv
|
Jag behöver hjälp med en simpel javascript-funktion som tar en parameter med klassnamn och sedan sätter checked på alla checkboxar med den klassen. Dvs:
Kod:
function selectAll(className) { kod } onclick="selectAll('enklass');" Väldigt tacksam för hjälp! |
||
Svara med citat |
2008-01-06, 17:23 | #2 | ||
|
|||
Har WN som tidsfördriv
|
Har blivit tipsad om denna funktion:
Kod:
function selectAll(name) { var elms = document.forms["myFormName"].elements, len = elms.length; while (len--) if (/^checkbox$/i.test(elms[len].type) && elms[len].className == name) elms[len].checked = true; } |
||
Svara med citat |
2008-01-06, 18:12 | #3 | ||
|
|||
Klarade millennium-buggen
|
Kod:
ref = document.getElementsByTagName('input'); for (i=0;i<ref.length;i++) { if (ref[i].className.search(/minklass/)>=0) ref[i].checked='checked'; } Ex på detta: Kod:
ref = document.getElementsByClassName('minklass'); for (i=0;i<ref.length;i++) { ref[i].checked='checked'; } |
||
Svara med citat |
2008-01-06, 18:14 | #4 | ||
|
|||
Supermoderator
|
Va? Element med fler än en klass?
__________________
Full-stack developer, free for smaller assignments |
||
Svara med citat |
2008-01-06, 18:19 | #5 | ||
|
|||
Klarade millennium-buggen
|
<tag class="storafonten vackrafargen finaflickanbakgrunden">en tagg med många klasser</tag>
|
||
Svara med citat |
2008-01-06, 18:25 | #6 | ||
|
|||
Medlem
|
vad han tänkte på var nog <tag class="något" class="något annat">
Däremot fungerar nog nedanstående Kod:
function checkCheckboxes(nameOfTag) { var elements = document.getElementsByTagName(nameOfTag, nameOfClass); for (i=0;i<elements.length; i++) { if(elements[i].className == nameOfClass) { elements[i].checked = true; } } } |
||
Svara med citat |
2008-01-06, 18:32 | #7 | ||
|
|||
Klarade millennium-buggen
|
Fungerar nog .. inte. Du anropar getElementsByTagName med två variabler och hela grejen är att className-propertyn är en sträng med alla befintliga taggar concatenerade. Alltså kan du inte köra jämförelser direkt på den.
getElementsByClassName är söligare än min approch eftersom den traverserar alla objekt i DOM-trädet och kollar strängar men marginellt snyggare kod. |
||
Svara med citat |
2008-01-06, 18:44 | #8 | ||
|
|||
Medlem
|
Alldeles rätt. Jag skrev det lite väl hastat. Parametrarna skulle ju ligga i funktionens signatur :-)
Lätt det blir fel ibland. Hursomhelst så funkar den under förutsättning att klassen som fungerar som markeringsdefinition ligger först av de definierade klasserna. Annars så går det ju lika bra med grazzys implementation. Problemet någorlunda löst iaf Kod:
function checkCheckboxes(nameOfTag, nameOfClass) { var elements = document.getElementsByTagName(nameOfTag); for (i=0;i<elements.length; i++) { if(elements[i].className == nameOfClass) { elements[i].checked = true; alert(elements[i].className); } } } |
||
Svara med citat |
2008-01-06, 21:18 | #9 | ||
|
|||
Supermoderator
|
Där ser man, efter många års kodande hade jag faktiskt inte koll på att det gick att sätta flera klasser på element =) Har aldrig haft behov av det antar jag.
Skulle ge dig samma tips som grazzy. getElementsByClassName är alltså inte en funktion som finns i Javascript men det finns som han nämnde tusentals lättfunna exempel på nätet.
__________________
Full-stack developer, free for smaller assignments |
||
Svara med citat |
2008-01-06, 23:07 | #10 | |||
|
||||
Mycket flitig postare
|
Citat:
Kör på en lösning som kollar om det finns en implementering i webbläsaren med fallback till javascript-lösningen eftersom även den snabbaste javascript-varianten av getElementsByClassName lär vara (mycket) långsammare. |
|||
Svara med citat |
Svara |
|
|