FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
Hejsan!
Jag har en lista med saker som listas ur en databas, antalet rader (TR) kan vara olika från gång till gång. Kod:
<TABLE> <TR><TD class=list></TD></TR> <TR><TD class=list></TD></TR> <TR><TD class=list></TD></TR> </TABLE> När man klickar på en rad (TR) så ska denna rad byta bakgrund (eller egentligen class från "list" till "list_sel"). När man sedan klickar på en annan rad ska den förra raden byta tillbaka till "list" igen. Någon som har en lösning på problemet, har suttit och klurat med javascript. Lyckas byta klass men sedan när man klickar på en annan rad vet jag inte hur jag får bort den förra raden. Har även en annan fråga: Om jag har öppnat ett popupfönster från en sida och sedan i popupfönstret vill göra så att sidan jag öppnade fönstret från uppdateras, hur gör jag då? Tack på förhand! |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Har WN som tidsfördriv
|
Förslagsvis kan du ge varje td ett unikt id, t ex id="td_nr_1" osv. Sen har du en funktion som heter f, och ser ut typ så här (pseudokod...):
<script> function f (objekt) { foreach (tds as td) {td.className = 'list';} objekt.className = 'list_on'; } </script> <TABLE> <TR><TD class="list" onclick="f(this)"></TD></TR> <TR><TD class="list" onclick="f(this)"></TD></TR> <TR><TD class="list" onclick="f(this)"></TD></TR> </TABLE> |
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Mycket flitig postare
|
Du behöver inte ge alla TD ett eget id eftersom du kan nyttja DOM.
Citat:
edit: notera att alla td skall ha en identisk onclick. Det skulle dock gå att skriva om scriptet så att ingen inline-javascript behövdes. |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Medlem
|
Har testat koden som jag fick av dig Xyzi men jag får den inte att fungera. Inga felmeddelanden men inget händer heller. Får nodes.length till 1, vilket jag tycker verkar konstigt. Den borde väl vara 3 eller 2 om man räknar med nollan?
Ser någon var felet ligger? Kod:
<script> function change(toNode) { var nodes = document.getElementById("theTable").childNodes; for (var i = 0; i < nodes.length; i++) { if (nodes[i] == toNode) {nodes[i].className = "list_sel"} else {nodes[i].className = "list"} alert(nodes.length) } } </script> <link href="style.css" rel=stylesheet> <table id="theTable"> <tr><td class=list onClick="change(this.parentNode)">asd</td></tr> <tr><td class=list onClick="change(this.parentNode)">asd</td></tr> <tr><td class=list onClick="change(this.parentNode)">asd</td></tr> </table> |
||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Har WN som tidsfördriv
|
getElementById är lite olika mellan webbläsarna... kanske det som är problemet?
|
|||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Mycket flitig postare
|
Testa att ändra till:
Kod:
function change(toNode) { var nodes = document.getElementById("theTable").rows; for (var i = 0; i < nodes.length; i++) { if (nodes[i] == toNode) { nodes[i].className = "list_sel" } else { nodes[i].className = "list" } } } |
||
![]() |
![]() |
Svara |
|
|