Über "document.getElementsByName" geht das nicht, weil Tabellenzellen lt. HTML kein "name"-Attribut besitzen.
je nach Brauser kann es daher passieren, dass er dir keinen Namen zurückgibt, auch wenn die Zelle einen besitzt.
Du kannst Gruppen von Zellen bilden, indem du ihnen gleiche IDs verpasst... ist zwar auch nicht ganz koscher, weil IDs eigentlich nur einmal vergeben werden dürfen, ...aber damit verärgerst du nur das w3c
Dann gehst du alle Zellen durch, ....welche eine ID besitzen, werden zu einer Gruppe zugeordnet und als Objekt in einen Array gespeichert... fertig.
das Skript könnte dann so aussehen....
Code:
<script type="text/javascript">
<!--
//Farben...(normal,markiert)
arrColors=new Array('white','red');
arrGroups=new Array();
function init_events()
{
tbl=document.getElementById('myTable');
for(var r=0;r<tbl.rows.length;++r)
{
for(var c=0;c<tbl.rows[r].cells.length;++c)
{
if(!tbl.rows[r].cells[ c].id){continue;}
if(!arrGroups[tbl.rows[r].cells[ c].id]){arrGroups[tbl.rows[r].cells[ c].id]=new Array();}
arrGroups[tbl.rows[r].cells[ c].id].push(tbl.rows[r].cells[ c]);
tbl.rows[r].cells[ c].onmouseover=new Function('F','highlight(this,1)');
tbl.rows[r].cells[ c].onmouseout=new Function('F','highlight(this,0)');
}
}
}
function highlight(o,e)
{
for(c=0;c<arrGroups[o.id].length;++c)
{
arrGroups[o.id][ c].style.backgroundColor=arrColors[e];
}
}
if(document.getElementById)
{
window.onload=init_events;
}
//-->
</script>
... du musst der betreffenden Tabelle die ID "myTable" verpassen(das kennst du ja schon
) ..und den Zellen die IDs deiner Wahl.
Damits nicht wieder heisst, es funktioniert nicht.....
so funktionierst
Wenn du das nur bei Spalten machen willst, gehts noch einfacher(vorrausgesetzt, alle <tr> enthalten die gleiche Anzahl Zellen)...:
Code:
<script type="text/javascript">
<!--
//Farben...(normal,markiert)
arrColors=new Array('white','red');
arrCols=new Array();
function init_events()
{
tbl=document.getElementById('myTable');
for(var r=0;r<tbl.rows.length;++r)
{
for(var c=0;c<tbl.rows[r].cells.length;++c)
{
if(!arrCols[ c]){arrCols[ c]=new Array();}
arrCols[ c].push(tbl.rows[r].cells[ c]);
tbl.rows[r].cells[ c].onmouseover=new Function('F','highlight('+c+',1)');
tbl.rows[r].cells[ c].onmouseout=new Function('F','highlight('+c+',0)');
}
}
}
function highlight(n,e)
{
for(c=0;c<arrCols[n].length;++c)
{
arrCols[n][ c].style.backgroundColor=arrColors[e];
}
}
if(document.getElementById)
{
window.onload=init_events;
}
//-->
</script>
Da nur wieder der Tabelle die ID verpassen.... der Rest läuft von selbst, die Zellen benötigen keine IDs.
Auch hier ein
Testlauf.