Javascript und Tabellenfelder. White <> #000000
golem
- javascript
Hallo,
ich hebe jetzt einige Stunden damit verbracht eine Tabellen felder so wie in phpmyadmin mit Farben hinterlegen zu können.
Dazu hatte ich mir das Javascript aus phpmyadmin herauskopiert und in meine Seite eingebaut. Danach eine Tabelle mit unterschiedlichen id's auf meiner Sete erzeugt und gehofft, das das funktioniert.
Natürlich nicht auf anhieb. Ich habe das getzs gelößt, verstehe den Grund aber nicht.
in den Script wird mit
currentColor = theCells[0].getAttribute("bgcolor");
die aktuelle Fabre ermittelt. in IE funktioniert das immern, aber mit Mozilla bekomme ich nur dann eine Farbe geliefert, wenn ich vorher die Hintergrundfarbe nur #ffffff gesetzt habe. Wenn ich statt dessen bgcolor="white" benutze funktioniert das mir Mozilla nicht mehr.
so sehen die zeilen der Tabelle aus:
<tr onmouseover="setPointer(this, 6624, 'over', '#ffffff', '#CCFFCC', '#FFCC99');" onmouseout="setPointer(this, 6624, 'out', '#ffffff', '#CCFFCC', '#FFCC99');" onmousedown="setPointer(this, 6624, 'click', '#ffffff', '#CCFFCC', '#FFCC99');"><td bgcolor="#ffffff" width="75">6624</td><td bgcolor="#ffffff" width="250">DELO ML</td>
und so das Script:
/**
* This array is used to remember mark status of rows in browse mode
*/
var marked_row = new Array;
/**
* Sets/unsets the pointer and marker in browse mode
*
* @param object the table row
* @param interger the row number
* @param string the action calling this script (over, out or click)
* @param string the default background color
* @param string the color to use for mouseover
* @param string the color to use for marking a row
*
* @return boolean whether pointer is set or not
*/
function setPointer(theRow, theRowNum, theAction, theDefaultColor, thePointerColor, theMarkColor)
{
var theCells = null;
// 1. Pointer and mark feature are disabled or the browser can't get the
// row -> exits
if ((thePointerColor == '' && theMarkColor == '')
|| typeof(theRow.style) == 'undefined') {
return false;
}
// 2. Gets the current row and exits if the browser can't get it
if (typeof(document.getElementsByTagName) != 'undefined') {
theCells = theRow.getElementsByTagName('td');
}
else if (typeof(theRow.cells) != 'undefined') {
theCells = theRow.cells;
}
else {
return false;
}
// 3. Gets the current color...
var rowCellsCnt = theCells.length;
var domDetect = null;
var currentColor = null;
var newColor = null;
// 3.1 ... with DOM compatible browsers except Opera that does not return
// valid values with "getAttribute"
if (typeof(window.opera) == 'undefined'
&& typeof(theCells[0].getAttribute) != 'undefined') {
currentColor = theCells[0].getAttribute("bgcolor");
//currentColor = theCells[0].getAttribute('background-Color');
//currentColor = theCells[0].style.backgroundColor;
domDetect = true;
//window.alert(currentColor);
}
// 3.2 ... with other browsers
else {
currentColor = theCells[0].style.backgroundColor;
domDetect = false;
} // end 3
// 4. Defines the new color
// 4.1 Current color is the default one
if (currentColor == ''
|| currentColor.toLowerCase() == theDefaultColor.toLowerCase()) {
if (theAction == 'over' && thePointerColor != '') {
newColor = thePointerColor;
}
else if (theAction == 'click' && theMarkColor != '') {
newColor = theMarkColor;
}
}
// 4.1.2 Current color is the pointer one
else if (currentColor.toLowerCase() == thePointerColor.toLowerCase()
&& (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])) {
if (theAction == 'out') {
newColor = theDefaultColor;
}
else if (theAction == 'click' && theMarkColor != '') {
newColor = theMarkColor;
marked_row[theRowNum] = true;
}
}
// 4.1.3 Current color is the marker one
else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) {
if (theAction == 'click') {
newColor = (thePointerColor != '')
? thePointerColor
: theDefaultColor;
marked_row[theRowNum] = (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])
? true
: null;
}
} // end 4
// 5. Sets the new color...
if (newColor) {
var c = null;
// 5.1 ... with DOM compatible browsers except Opera
if (domDetect) {
for (c = 0; c < rowCellsCnt; c++) {
theCells[c].setAttribute("bgcolor", newColor, 0);
//theCells[c].style.backgroundColor = newColor;
} // end for
}
// 5.2 ... with other browsers
else {
for (c = 0; c < rowCellsCnt; c++) {
theCells[c].style.backgroundColor = newColor;
}
}
} // end 5
return true;
} // end of the 'setPointer()' function
Ich meinete da in der Überschrift selbstverständlich white <> #ffffff .
ich versteh imme noch nich warum das nicht funktioniert hat?
Golem
Hi,
ich versteh imme noch nich warum das nicht funktioniert hat?
ist das denn so wichtig zu verstehen? Vielleicht antwortet ja niemand, da das Problem ohnehin gelöst ist...
Eine belegbare Erklärung habe ich zwar nicht, aber immerhin eine Vermutung:
white sowie auch #fff sind für CSS definiert. Du verwendest aber das veraltete HTML-Attribut bgColor. Ich vermute, daß hier auch die abgekürzte Schreibweise #fff nicht funktionieren wird.
freundliche Grüße
Ingo