webForumDet fria alternativet

Ändra färg på rad?

JavaScript

24 svar · 662 visningar · startad av Bosse168 · sida 2 av 2

Frågan, av Bosse168

Hur går man tillväga för att ändra färgen på en rad vid OnClick? Sökte och fann denna tråden men förstår inte riktigt hur man ska gå tillväga för att få det att funka. Jag loopar ut rader så det är ju inga problem att sätta ett id på en \<TR\> rad men har ingen aning var jag ska sätta in den koden som man får fram ur tråden ovan

Läs frågan i sin helhet →
Medlem sedan dec. 20025 483 inlägg
#21

Så är det inte för mig. Det finns två alternativ som jag ser det. Om minst en ruta är ikryssad och minst en ruta urkryssad, skall de resterande bli ikryssade vid anrop av CheckAll(). Det andra alternativet är det omvända:

<script type="text/javascript">

var form, elms, eLen;

window.onload = function(){
    form = document.forms["delmailform"],
    elms = form.elements,
    eLen = elms.length;

    for (var i = 0, elm; (elm = elms[i]); ++i)
	if (elm.name == "del")
	    elm.onclick = function(){
		this.parentNode.style.backgroundColor = this.parentNode.style.backgroundColor == "white" ? "blue" : "white";
	    }
}

function CheckAll(){
    var ch = true;

    for (var i = 0; i < eLen; ++i)
	if (elms[i].checked) {
	    ch = false;
	    break;
	}

    var colors = ["white", "blue"];

    for (var i = 0, elm; (elm = elms[i]); ++i){
	elm.checked = ch;
	elm.parentNode.style.backgroundColor = colors[ch * 1];
    }
}

</script>
<html>
<body>
	<form name="delmailform">
	<table>
	<tr>
	<td id="td1"><input type="checkbox" name="del" value="<%=myArray(1,i)%>" onclick="toggleBgColor('td1',this)"></td>
	</tr>
	<tr>
	<td id="td2"><input type="checkbox" name="del" value="<%=myArray(1,i)%>" onclick="toggleBgColor('td2',this)"></td>
	</tr>
	<tr>
	<td id="td3"><input type="checkbox" name="del" value="<%=myArray(1,i)%>" onclick="toggleBgColor('td3',this)"></td>
	</tr>
	<tr>
	<td id="td4"><input type="checkbox" name="del" value="<%=myArray(1,i)%>" onclick="toggleBgColor('td4',this)"></td>
	</tr>
	</table>
	<a href="java&#115;cript:void(CheckAll());">Markera alla</a>
	</form>
</body>
</html>

:)

Medlem sedan nov. 20031 018 inlägg
#22

Nope den funkar inte alls.:(

Medlem sedan dec. 20025 483 inlägg
#23

Jo, det gör den. Kan du visa ditt exempel som ej fungerar, samt redogöra för vilken webbläddrare du använder?

:)

Medlem sedan nov. 20041 189 inlägg
#24

Jag gillade också den här tråden :) tack för att du skrev allt det på begäran. Det funkar bra för mig.

Hade du kunnat förklara den här snutten för mig?

for (var i = 0, elm; (elm = elms*); ++i)

Du sätter först i till noll, sen ska den loopa så länge som elm är lika med elms (array). Men varför sätter du "i = 0, elm"?*

Medlem sedan dec. 20025 483 inlägg
#25

I den första delen av for-loopen deklarerar jag vilka variabler som skall vara lokala i denna slinga, d v s i och elm. I den mellersta delen av loopen tilldelas elm värdet på den givna positionen i arrayen. När i når ett indexvärde utanför fältet returnerar elms ett värde av typen undefined, vilket tolkas som falskt, och loopen är klar.

259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)