webForumDet fria alternativet

Alla kolumner ska färgläggas

JavaScript

11 svar · 270 visningar · startad av ampy

Medlem sedan feb. 20011 498 inlägg
Frågan#1

Hittade denna lilla kodsnutt i en tråd men den fungerar inte riktigt så som jag vill ha det.

<html>
<head>

	<script type="text/javascript">
	<!--
		function colorize(tbl,color){
			if(document.getElementById('f'+tbl).checked){
				document.getElementById(tbl).style.backgroundColor=color;
			} else {
				document.getElementById(tbl).style.backgroundColor='';
			}
		}
	//-->
	</script>

</head>
<body>

	<table width="100px">
	<tr>
		<td id="b1"><input id="fb1" type="checkbox" onclick="colorize('b1','#CC0000');"></td> <td width="50px" id="b1"></td>
	</tr>
	</table>

</body>
</html>

När man makerar 'checkboxen' så färgläggs bara den första kolumnen (den vänstra) och den högra förblir vit.

Hur ska man göra så att båda kolumnerna färgläggs (kan vara fler än två kolumner)?

Kom på en lösning genom att lägga id="b1" i tr-taggen men den lösningen vill jag inte använda mig av.

Medlem sedan sep. 20021 655 inlägg
#2

Du kan inte ha samma id på två element. Ett id måste vara unikt.

Att flytta ut id="b1" på <tr>-taggen funkar däremot bra - varför vill du inte använda dig av det?

Medlem sedan feb. 20011 498 inlägg
#3

Har modifierat koden lite:

html>
<head>

	<script type="text/javascript">
	<!--
		function colorize(tbl,color){
			if(document.getElementById('f'+tbl).checked){
				document.getElementById(tbl).style.backgroundColor=color;
			} else {
				document.getElementById(tbl).style.backgroundColor='';
			}
		}
	//-->
	</script>

</head>
<body>

	<table width="100px" cellspacing="0px" cellpadding="0px">
	<tr id="b1">
		<td bgcolor="#00ff00"><input id="fb1" type="checkbox" onclick="colorize('b1','#CC0000');"></td> <td bgcolor="#00ff00" width="50px"></td>
	</tr>
	</table>

</body>
</html>

Har flyttat ut id="b1" till tr-taggen samt satt dit bakgrundsfärg i cellerna. Nu när man markerar 'checkboxen' så ändras inte färgen.

Medlem sedan sep. 20021 655 inlägg
#4

Det beror på att du har angett en bakgrundsfärg i <td>-taggarna, som går före bakgrundsfärgen i <tr>-taggen.

Testa:

<html>
<head>

	<script type="text/javascript">
	<!--
		function colorize(tbl,color){
			if(document.getElementById('f'+tbl).checked){
				document.getElementById(tbl).style.backgroundColor=color;
			} else {
				document.getElementById(tbl).style.backgroundColor='#00ff00';
			}
		}
	//-->
	</script>

</head>
<body>

	<table width="100px" cellspacing="0px" cellpadding="0px">
	<tr id="b1" style="background-color: #00ff00">
		<td><input id="fb1" type="checkbox" onclick="colorize('b1','#CC0000');"></td> <td width="50px"></td>
	</tr>
	</table>

</body>
</html>
Medlem sedan feb. 20011 498 inlägg
#5

Kanske ska nämnas att jag har två färger på kolumnerna som återkommer varannan gång. Hur ska man lösa detta då?

Medlem sedan feb. 20011 498 inlägg
#6

Ingen?

Medlem sedan feb. 20011 498 inlägg
#7

Fortfarande ingen? :q

Medlem sedan maj 20007 492 inlägg
#8

Jag tänkte svara, men eftersom du bumpar dina trådar skippar jag det, ha en trevlig helg.

Medlem sedan sep. 20021 655 inlägg
#9

Visa hur din kod ser ut nu så blir det lättare.

Medlem sedan feb. 20011 498 inlägg
#10
<html> 
<head> 

    <script type="text/javascript"> 
    <!-- 
        function colorize(tbl,color){ 
            if(document.getElementById('f'+tbl).checked){ 
                document.getElementById(tbl).style.backgroundColor=color; 
            } else { 
                document.getElementById(tbl).style.backgroundColor='#00ff00'; 
            } 
        } 
    //--> 
    </script> 

</head> 
<body> 

    <table width="100px" cellspacing="0px" cellpadding="0px"> 
    <tr id="b1"> 
        <td style="background-color: #00ff00;"><input id="fb1" type="checkbox" onclick="colorize('b1','#CC0000');"></td> 
        <td style="background-color: #0000ff;" width="50px"></td> 
    </tr> 
    </table> 

</body> 
</html>
Medlem sedan sep. 20021 655 inlägg
#11
<html> 
<head> 

    <script type="text/javascript"> 
    <!-- 
        function colorize(isChecked, objRow){ 
            if(isChecked){ 
                objRow.className = "selected"; 
            } else { 
                objRow.className = ""; 
            } 
        } 
    //--> 
    </script> 

    <style type="text/css">
    .kol1 {
        background-color: #00ff00;
    }
    
    .kol2 {
        background-color: #0000ff;
    }
    
    .selected td {
        background-color: #cc0000;
    }
    </style>
</head> 
<body> 

    <table width="100" cellspacing="0" cellpadding="0"> 
    <tr> 
        <td class="kol1"><input type="checkbox" onclick="colorize(this.checked, this.parentNode.parentNode);"></td> 
        <td class="kol2" width="50"></td> 
    </tr> 
    </table> 

</body> 
</html>
Medlem sedan feb. 20011 498 inlägg
#12

Tack dectgap!

396 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
262 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)