Script zerschießt den IE

ZodiacXP

Erfahrenes Mitglied
Hallo,

ich habe ein relativ einfaches JavaScript geschrieben. Es geht darum eine Tabellenzeile komplett anders einzufärben wenn man mit der Maus drüber geht und beim verlassen dann wieder einen Fade zur Ursprungsfarbe zu machen. Im Firefox klappt es wunderbar nur der IE sagt, dass das Script zu Aufwendig wär und ob man es stoppen möchte, danach hängt sich der IE komplett auf.

Hier der Quelltext - es sind ein paar eigene Funktionen noch drin die sich (hoffentlich) durch die Bezeichnung selbst erklären:

HTML:
var fades = new Array();
fades["fade"] = new Array();
fades["oldColor"] = new Array();
fades["akt_row"] = "";
fades["time"] = 500;				// Zeit vom Fade
fades["fps"] = 10;					// Bilder pro Sekunde

function fade_row(theRow, newColor) {
	id = theRow.id;
	fades["akt_row"] = id;

	if (typeof fades["oldColor"][id] == "undefined") {
		fades["oldColor"][id] = new Array();
		aktColor = extractNumbers(getStyle("id", id, "", "backgroundColor"));
		fades["oldColor"][id] = aktColor;
	}
	
	new_r = parseInt(newColor.substr(0,2),16);
	new_g = parseInt(newColor.substr(2,2),16);
	new_b = parseInt(newColor.substr(4,2),16);

	setStyle("id", id, "", "backgroundColor", "#"+RGBtoHEX(new_r, new_g, new_b));
}

function fade_row_out(theRow) {
	fades["akt_row"] = "";
	id = theRow.id;
	aktColor = extractNumbers(getStyle("id", id, "", "backgroundColor"));

	frame_sum = ((fades["time"] / 1000) * fades["fps"]);
	if (typeof fades["fade"][id] == "undefined") fades["fade"][id] = new Array();

	fades["fade"][id]["end"] = frame_sum;
	fades["fade"][id]["r"] = aktColor[0];
	fades["fade"][id]["g"] = aktColor[1];
	fades["fade"][id]["b"] = aktColor[2];
	fades["fade"][id]["stp_r"] = (fades["oldColor"][id][0] - aktColor[0]) / frame_sum;
	fades["fade"][id]["stp_g"] = (fades["oldColor"][id][1] - aktColor[1]) / frame_sum;
	fades["fade"][id]["stp_b"] = (fades["oldColor"][id][2] - aktColor[2]) / frame_sum;

	if (typeof fades["fade"][id]["c"] == "undefined") {
		fades["fade"][id]["c"] = 0;
		fade(id);
	} else {
		fades["fade"][id]["c"] = 0;
	}
}

function fade_cell(theCell, newColor) {
	new_r = parseInt(newColor.substr(0,2),16);
	new_g = parseInt(newColor.substr(2,2),16);
	new_b = parseInt(newColor.substr(4,2),16);

	theCell.style["backgroundColor"] = "#"+RGBtoHEX(new_r, new_g, new_b);
}

function fade_cell_out(theCell) { theCell.style["backgroundColor"] = ""; }

function fade(id) {
	if (fades["akt_row"] != id && fades["fade"][id]["c"] <= fades["fade"][id]["end"]) {
		rgb = RGBtoHEX(
			fades["fade"][id]["r"] + fades["fade"][id]["stp_r"] * fades["fade"][id]["c"],
			fades["fade"][id]["g"] + fades["fade"][id]["stp_g"] * fades["fade"][id]["c"],
			fades["fade"][id]["b"] + fades["fade"][id]["stp_b"] * fades["fade"][id]["c"]
		);

		if (existsElem("id", id, "")) setStyle("id", id, null, "backgroundColor", "#"+rgb);
		fades["fade"][id]["c"] = fades["fade"][id]["c"] + 1;
	}

	window.setTimeout("fade('"+id+"')", (1000/fades["fps"]));
}

im HTML gillt dann für <tr> Elemente:
onMouseOver="fade_row(this, '30503A');" onMouseOut="fade_row_out(this);"

und für <td>-Elemente:
onMouseOver="fade_cell(this, '487857');" onMouseOut="fade_cell_out(this);"

Warum hängt keiner außer der IE
 
Zuletzt bearbeitet:
Zurück