CarterPertaine
asked on
Change cell background color based on radio button selected in another cell.
I want to change the background color of column 1 if one of the radio buttons with values A, 1, 2, 3, or 4 is selected from column 2 without having to refresh the frame. I want it to be blank (white?) if value N is selected. The table is being built programmatically. Here is a cut down sample of my table.
<TABLE>
<TR>
<TD>Column 1</TD>
<TD>Selection</TD>
</TR>
<TD>00250000</TD>
<TD><INPUT TYPE="RADIO" NAME="2" VALUE="N" >None<INPUT TYPE="RADIO" NAME="2" VALUE="A">All<INPUT TYPE="RADIO" NAME="2" VALUE="1">1<INPUT TYPE="RADIO" NAME="2" VALUE="2">2<INPUT TYPE="RADIO" NAME="2" VALUE="3">3<INPUT TYPE="RADIO" NAME="2" VALUE="4" CHECKED>4</TD>
<TD></TD>
</TR>
<TD>00201469</TD>
<TD><INPUT TYPE="RADIO" NAME="3" VALUE="N" CHECKED>None<INPUT TYPE="RADIO" NAME="3" VALUE="A">All</TD>
<TD></TD>
</TR>
<TD>00201556</TD>
<TD><INPUT TYPE="RADIO" NAME="4" VALUE="N" CHECKED>None<INPUT TYPE="RADIO" NAME="4" VALUE="A">All</TD>
<TD></TD>
</TR>
</table>
<TABLE>
<TR>
<TD>Column 1</TD>
<TD>Selection</TD>
</TR>
<TD>00250000</TD>
<TD><INPUT TYPE="RADIO" NAME="2" VALUE="N" >None<INPUT TYPE="RADIO" NAME="2" VALUE="A">All<INPUT TYPE="RADIO" NAME="2" VALUE="1">1<INPUT TYPE="RADIO" NAME="2" VALUE="2">2<INPUT TYPE="RADIO" NAME="2" VALUE="3">3<INPUT TYPE="RADIO" NAME="2" VALUE="4" CHECKED>4</TD>
<TD></TD>
</TR>
<TD>00201469</TD>
<TD><INPUT TYPE="RADIO" NAME="3" VALUE="N" CHECKED>None<INPUT TYPE="RADIO" NAME="3" VALUE="A">All</TD>
<TD></TD>
</TR>
<TD>00201556</TD>
<TD><INPUT TYPE="RADIO" NAME="4" VALUE="N" CHECKED>None<INPUT TYPE="RADIO" NAME="4" VALUE="A">All</TD>
<TD></TD>
</TR>
</table>
<input type="radio" onclick="javascript:docume nt.style.b ackgroundC olor=#9999 99" />
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Forgive my ignorance. I'm a newbie to js. I'm not quite getting what you are saying. Am I any where close?
thanks,
<TABLE>
<TR>
<TD>Column 1</TD>
<TD>Selection</TD>
</TR>
<TD Id="TD2">00250000</TD>
<TD>
<INPUT TYPE="RADIO" onclick="javascript:docume nt.TD2.sty le.backgro undColor=# ffffff" NAME="2" VALUE="N" >None
<INPUT TYPE="RADIO" onclick="javascript:docume nt.TD2.sty le.backgro undColor=# 999999" NAME="2" VALUE="A">All
<INPUT TYPE="RADIO" onclick="javascript:docume nt.TD2.sty le.backgro undColor=# 888888" NAME="2" VALUE="1">1
<INPUT TYPE="RADIO" onclick="javascript:docume nt.TD2.sty le.backgro undColor=# 777777" NAME="2" VALUE="2">2
</TD>
</TR>
</table>
thanks,
<TABLE>
<TR>
<TD>Column 1</TD>
<TD>Selection</TD>
</TR>
<TD Id="TD2">00250000</TD>
<TD>
<INPUT TYPE="RADIO" onclick="javascript:docume
<INPUT TYPE="RADIO" onclick="javascript:docume
<INPUT TYPE="RADIO" onclick="javascript:docume
<INPUT TYPE="RADIO" onclick="javascript:docume
</TD>
</TR>
</table>
Yeah very
<TABLE>
<TR>
<TD>Column 1</TD>
<TD>Selection</TD>
</TR>
<TD Id="TD2">00250000</TD>
<TD>
<INPUT TYPE="RADIO" onclick="javascript:TD2.st yle.backgr oundColor= 'ffffff'" NAME="2" VALUE="N" >None
<INPUT TYPE="RADIO" onclick="javascript:TD2.st yle.backgr oundColor= '999999'" NAME="2" VALUE="A">All
<INPUT TYPE="RADIO" onclick="javascript:TD2.st yle.backgr oundColor= '888888'" NAME="2" VALUE="1">1
<INPUT TYPE="RADIO" onclick="javascript:TD2.st yle.backgr oundColor= '777777'" NAME="2" VALUE="2">2
</TD>
</TR>
</table>
<TABLE>
<TR>
<TD>Column 1</TD>
<TD>Selection</TD>
</TR>
<TD Id="TD2">00250000</TD>
<TD>
<INPUT TYPE="RADIO" onclick="javascript:TD2.st
<INPUT TYPE="RADIO" onclick="javascript:TD2.st
<INPUT TYPE="RADIO" onclick="javascript:TD2.st
<INPUT TYPE="RADIO" onclick="javascript:TD2.st
</TD>
</TR>
</table>
I would do that like this:
<html>
<body>
<form>
<TABLE>
<TR>
<TD>Column 1</TD>
<TD>Selection</TD>
</TR>
<TD Id="TD2">00250000</TD>
<TD onclick="document.getEleme ntById('TD 2').style. background Color='#ff ff00';">
<INPUT TYPE="RADIO" NAME="R2" VALUE="N" >None
<INPUT TYPE="RADIO" NAME="R2" VALUE="A">All
<INPUT TYPE="RADIO" NAME="R2" VALUE="1">1
<INPUT TYPE="RADIO" NAME="R2" VALUE="2">2
</TD>
</TR>
</table>
<input type=submit>
</form>
</body>
</html>
<html>
<body>
<form>
<TABLE>
<TR>
<TD>Column 1</TD>
<TD>Selection</TD>
</TR>
<TD Id="TD2">00250000</TD>
<TD onclick="document.getEleme
<INPUT TYPE="RADIO" NAME="R2" VALUE="N" >None
<INPUT TYPE="RADIO" NAME="R2" VALUE="A">All
<INPUT TYPE="RADIO" NAME="R2" VALUE="1">1
<INPUT TYPE="RADIO" NAME="R2" VALUE="2">2
</TD>
</TR>
</table>
<input type=submit>
</form>
</body>
</html>
Sorry, one <tr> tag is missing in upper example.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Thanks.
ASKER
Thanks for all your help. Here is the final version that works perfectly. If None is selected, it sets background to white. If another is selected it sets background to yellow.
<!-- saved from url=(0022)http://internet.e-mail -->
<html>
<head>
<script>
function init(){
var elem = document.forms[0].elements ;
for(var i=0;i<elem.length;i++){
if(elem[i].type=="radio" && elem[i].name.indexOf("R")= =0){
elem[i].onclick = checkRow;
}
}
}
function checkRow(){
var theRow = this.parentNode;
var radioval = this.value;
while(theRow && theRow.nodeName!="TR"){
theRow = theRow.parentNode;
}
var cells = theRow.cells;
if(radioval!="N")
{
cells[0].style.backgroundC olor = "#FFFF00";
}
else
{
cells[0].style.backgroundC olor = "#FFFFFF";
}
}
</script>
</head>
<body onLoad="init()">
<form>
<TABLE>
<TR>
<TD>Column 1</TD>
<TD>Selection</TD>
</TR>
<TD>00250000</TD>
<TD><INPUT TYPE="RADIO" NAME="R2" VALUE="N" >None<INPUT TYPE="RADIO" NAME="R2" VALUE="A">All<INPUT TYPE="RADIO" NAME="R2" VALUE="1">1<INPUT TYPE="RADIO" NAME="R2" VALUE="2">2<INPUT TYPE="RADIO" NAME="R2" VALUE="3">3<INPUT TYPE="RADIO" NAME="R2" VALUE="4" CHECKED>4</TD>
<TD></TD>
</TR>
<TR>
<TD>00201469</TD>
<TD><INPUT TYPE="RADIO" NAME="R3" VALUE="N" CHECKED>None<INPUT TYPE="RADIO" NAME="R3" VALUE="A">All</TD>
<TD></TD>
</TR>
<TR>
<TD>00201556</TD>
<TD><INPUT TYPE="RADIO" NAME="R4" VALUE="N" CHECKED>None<INPUT TYPE="RADIO" NAME="R4" VALUE="A">All</TD>
<TD></TD>
</TR>
</table>
<input type=submit>
</form>
</body>
</html>
<!-- saved from url=(0022)http://internet.e-mail -->
<html>
<head>
<script>
function init(){
var elem = document.forms[0].elements
for(var i=0;i<elem.length;i++){
if(elem[i].type=="radio" && elem[i].name.indexOf("R")=
elem[i].onclick = checkRow;
}
}
}
function checkRow(){
var theRow = this.parentNode;
var radioval = this.value;
while(theRow && theRow.nodeName!="TR"){
theRow = theRow.parentNode;
}
var cells = theRow.cells;
if(radioval!="N")
{
cells[0].style.backgroundC
}
else
{
cells[0].style.backgroundC
}
}
</script>
</head>
<body onLoad="init()">
<form>
<TABLE>
<TR>
<TD>Column 1</TD>
<TD>Selection</TD>
</TR>
<TD>00250000</TD>
<TD><INPUT TYPE="RADIO" NAME="R2" VALUE="N" >None<INPUT TYPE="RADIO" NAME="R2" VALUE="A">All<INPUT TYPE="RADIO" NAME="R2" VALUE="1">1<INPUT TYPE="RADIO" NAME="R2" VALUE="2">2<INPUT TYPE="RADIO" NAME="R2" VALUE="3">3<INPUT TYPE="RADIO" NAME="R2" VALUE="4" CHECKED>4</TD>
<TD></TD>
</TR>
<TR>
<TD>00201469</TD>
<TD><INPUT TYPE="RADIO" NAME="R3" VALUE="N" CHECKED>None<INPUT TYPE="RADIO" NAME="R3" VALUE="A">All</TD>
<TD></TD>
</TR>
<TR>
<TD>00201556</TD>
<TD><INPUT TYPE="RADIO" NAME="R4" VALUE="N" CHECKED>None<INPUT TYPE="RADIO" NAME="R4" VALUE="A">All</TD>
<TD></TD>
</TR>
</table>
<input type=submit>
</form>
</body>
</html>