Guten Morgen,
ich versuche in einer Tabelle oncklick die td durchzufärben.
Dabei soll aber die vorherig markierte Zeile wieder weiss werden.
Das markieren klappt, nur die vorherige Zeile blebit auch eingefärbt.
Wer kan nmir einen Tip geben?
Danke.
Übrigens ich verwende prototype!
function MarkRow(table, td) {
var elm = $(td).up('tr');
var tds = $(elm).getElementsByTagName('td');
for(var i = 0; i < tds.length; i++) {
if(typeof tds[i].style.backgroundColor) {
delete tds[i].style.backgroundColor;
}
tds[i].style.backgroundColor = "#3399CC";
tds[i].style.color = "#FFFFFF";
tds[i].style.fontWeight = "bold";
}
}
Danke.
streuner
18-01-2010, 11:36
Hi!
z.B.
$i=1;
while($row = mysql_fetch_array($result))
{
$color = ($i % 2) ? "#000000" : "#FFFFFF";
echo "<tr><td bgcolor='$color'>$i. TEXT</td></tr>";
$i++;
}
mfg streuner
nein ich meine.ich will die zeile nur markieren die gerade angeklickt wird.
streuner
18-01-2010, 11:53
Let me google that for you (http://lmgtfy.com/?q=css+zeile+anklicken+f%C3%A4rben)
usw.
http://www.tiptom.ch/homepage/faq.html?q=zellelink
mfg streuner
danke erstmal kollegen!
für alel die mal sowas brauchen.
habs so gelöst:
markedRows = {};
function MarkRow(td) {
var newColor = "#3399CC";
var oldCol = td.style.backgroundColor;
var tableId = $(td).up('table').id;
var elm = $(td).up('tr');
//Die markierte Zeile nochmal geklickt
if(td.style.backgroundColor == newColor) return;
//Die Tabelle wurde noch nie markiert, Array initialisieren
if(typeof markedRows[tableId] == 'undefined') {
markedRows[tableId] = {
oldColor: false,
rowId: false
}
} else { //Tabelle wurde schon geklickt, alte Spalte wiederherstellen
var tds = $(markedRows[tableId].rowId).getElementsByTagName('td');
for(var i = 0; i < tds.length; i++) {
tds[i].style.backgroundColor = markedRows[tableId].oldColor;
tds[i].style.color = "#000000";
tds[i].style.fontWeight = "normal";
}
}
var tds = $(elm).getElementsByTagName('td');
for(var i = 0; i < tds.length; i++) {
tds[i].style.backgroundColor = newColor;
tds[i].style.color = "#FFFFFF";
tds[i].style.fontWeight = "bold";
}
markedRows[tableId] = {
oldColor: oldCol,
rowId: elm.id
}
}
AmicaNoctis
18-01-2010, 15:08
Hallo,
auch wenn es zu spät kommt, hast du schonmal von Expando-Properties gehört? In JavaScript kannst du jedem Objekt zusätzliche Eigenschaften verpassen und in deinem Falle könnte man dort die vorhergehende Farbe speichern, statt in einem zusätzlichen Objektliteral.
Gruß,
Amica
Wozu überhaupt die „vorherige” Farbe speichern, wenn nur zwischen zweien gewechselt werden soll?
Ausserdem sollte man Darstellungsangaben auch aus dem JS heraushalten.
Die sinnvollere Vorgehensweise wäre also, per JavaScript Klassen zu setzen/entfernen - und die Elemente dann darüber im Stylesheet zu formatieren.
Dann braucht es auch nicht mehr drei Zuweisungen im JS für Hintergrundfarbe, Schriftfarbe und -gewicht.
Expando-Properties leider noch nie gehört...
aber schau ich mir an...
danke für denn tip...
ja warum die vorherige sprache speichern...damit keine zeile standardmässig falsch gefärbt wird.z.b. beim cyclen,,,,