Hallo Adolfó,
Ich habe das nun so gemacht nur weiß ich nicht was oder wie ich nun merke_dir function mouseoutColor übergeben soll.
wer sagt, das Du sie der Funktion mouseoutColor übergeben sollst/mußt? "...Variablen sind anders als bei anderen Scripteleien in Javascript soetwas von global, das man sie einer Funktion nicht zu übergeben braucht..."
Bitte wenigstens die Mühe machen und mitdenken!
[...]
var aktiv=false;
absolut unnöttig!
function ChangeCol(tab,color)
{document.getElementById('merke_dir').style.backgroundColor='#cccccc';
var merke_dir=tab;document.getElementById(tab).style.cursor='hand';
if(tab.id!=aktiv)
if(tab.id)
{
document.getElementById(tab).style.backgroundColor = color;
}}
function mouseoutColor(tab,color)
{
if(merke_dir==tab)
{
document.getElementById('tab').style.backgroundColor='red';
}
else
{
document.getElementById('tab').style.backgroundColor='#cccccc';
}</script>
<table>
<tr style="background: #cccccc;" onclick="ChangeText('tab1','111'); ChangeLink('tab1','?auswahl=rechnungsdruck&bestell_nr=1'); this.style.backgroundColor='red'"
onmouseover="ChangeCol('tab1','green')"
onmouseout="mouseoutColor('tab1','#cccccc')">
<td id="tab1">
1111
</td>
</tr>
<tr style="background: #cccccc" onclick="ChangeText('tab2','222'); ChangeLink('tab2','?auswahl=rechnungsdruck&bestell_nr=2'); this.style.backgroundColor='red'"
onmouseover="ChangeCol('tab2','green')"
onmouseout="mouseoutColor('tab2','#cccccc')">
<td id="tab2">
2222
</td>
</tr>
[...]
Gut... Ausgehend von Deinem Ausgangsposting, was nicht wirklich eindeutig Dein Problem beschreibt, habe ich Dir versucht zwei Wege aufzuzeigen, die aber meinerseits wohl ebensowenig verständlich waren.
Also zum Verständnis:
Du möchtest durch onMouseOver() und onMouseout() einen Efekt erzeugen, der a:hover ent-
spricht und den Hintergrund farblich verändert. Weiterhin willst Du durch onClick() der
angewählten Tabellenzelle einen festen Farbwert zuordnen. Dieser soll vorrübergehend
beim Event onMouseover auf einen anderen Farbwert geändert und dauerhaft - durch
onClick() auf eine andere Tabellenzelle - auf den default-Wert zurückgesetzt werden.
Das Abfragen von CSS-Eigenschaften durch Zugriff auf das style-Objekt:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
function mach()
{
for(i=0;i<100;i++)
{
document.getElementsByTagName("body")[0].innerHTML=document.getElementsByTagName("body")[0].innerHTML+'<div onClick="farbe(this)">'+i+'</div>'
}
}
function farbe(v)
{
for(i=0;i<100;i++)
{
if(document.getElementsByTagName("div")[i].style.backgroundColor=='red') document.getElementsByTagName("div")[i].style.backgroundColor='transparent'
}
v.style.backgroundColor='red'
}
</script>
</head>
<body onLoad="mach()">
</body>
</html>
Bei diesem Beispiel ist es egal, welches Element des Dokuments 'red' als Hintergrund hat. Es werden alle 100 <div> auf Übereinstimmung geprüft. Da die Farbe aber auch im onMouseover-Fall geändert werden soll, hast Du ja folgerichtig erkannt, daß for() in diesem Beispiel Dir nicht weiter helfen kann.
Daher ist es wohl besser die ID des Elements in einer Variablen (var merke_dir) zu fixieren (Was Du in Deinem geposteten Code schlichtweg vergessen hast - ergo: läuft nicht), um es für die von onMouseout aufgerufenen Funktion vergügbar zu machen. Allerdings ist mir nun noch eine bessere Möglichkeit eingefallen:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
function mach()
{
for(i=0;i<100;i++)
{
document.getElementsByTagName("body")[0].innerHTML=document.getElementsByTagName("body")[0].innerHTML+'<div onClick="farbe(this)" onMouseover="hover(this)" onMouseout="mouseoutColor(this)">'+i+'</div>'
}
}
function farbe(v)
{
if(document.getElementById("red"))
{
document.getElementById("red").style.backgroundColor='transparent'
document.getElementById("red").id=''
}
v.id='red'
document.getElementById("red").style.backgroundColor='red'
// Aufruf Deiner anderen Funktionen
}
function hover(v)
{
v.style.backgroundColor='#eee'
// Aufruf Deiner anderen Funktionen
}
function mouseoutColor(v)
{
if(v.id=='red') v.style.backgroundColor='red'
else v.style.backgroundColor='transparent'
// Aufruf Deiner anderen Funktionen
}
</script>
</head>
<body onLoad="mach()">
</body>
</html>
Dabei wird ledigleich abgeglichen, ob die ID 'red' ist; und damit Du nicht solche Mehrfachaufrufe in den Events hast, schreibe doch wie oben die Aufrufe in die Funktionen farbe(), hover() und mouseoutColor() direkt hinein.
Desweiteren nutze einfach this - damit ist die Vergabe von IDs im hartencodierten HTML überflüssig.
Gruß aus Berlin!
eddi