shredder01
Mitglied
Hallo,
ich versuche gerade ein älteres Skript nach meinen Vorstellungen hinzubiegen. Was auch soweit ganz gut funktionierte, solange ich die bisher enthaltenen Inline Javascript Sachen drin gelassen habe. Nun habe ich mir aber in den Kopf gesetzt den Code etwas aufzuräumen und alles Javascript auszulagern.
Leider bekomme ich die entsprechenden Funktionen damit nicht mehr zum laufen. Es gibt keine Fehlermeldung, es passiert einfach nichts.
Das war der alte Code der einfach im HTML-Dokument ausgegeben wurde:
Dazu gibt es dann folgendes im HTML:
Ich habe jetzt die ganzen Inline-Geschichten entfernt und das obige Script wie folgt abgeändert:
Das Array colorset enthält die IDs der Tags, weil die dynamisch beim Seitenaufbau eingefügt werden. Es wird zusammen mit der Variablen count am Anfang des Dokuments ausgegeben.
Im Prinzip macht die Funktion nicht weiter als einen Hexadezimalwert aus einem Eingabefeld auszulesen und eine daneben liegende Tabellen-Zelle mit dem entsprechenden Farbwert einzufärben. Gewissermaßen um den User zu verdeutlichen, welche Farbe er da gerade eingestellt hat.
Vielleicht hat ja jemand einen Tipp woran es haken könnte.
Danke!
ich versuche gerade ein älteres Skript nach meinen Vorstellungen hinzubiegen. Was auch soweit ganz gut funktionierte, solange ich die bisher enthaltenen Inline Javascript Sachen drin gelassen habe. Nun habe ich mir aber in den Kopf gesetzt den Code etwas aufzuräumen und alles Javascript auszulagern.
Leider bekomme ich die entsprechenden Funktionen damit nicht mehr zum laufen. Es gibt keine Fehlermeldung, es passiert einfach nichts.
Das war der alte Code der einfach im HTML-Dokument ausgegeben wurde:
Code:
<script language="Javascript">
var ie = false;
var nocolor = 'none';
if (document.all) { ie = true; nocolor = ''; }
function getObj(id) {
if (ie) { return document.all[id]; }
else { return document.getElementById(id); }
}
function changeColor(id, color) {
var link = getObj(id);
if (color == '') {
link.style.background = nocolor;
link.style.color = nocolor;
color = nocolor;
} else {
link.style.background = color;
link.style.color = color;
}
eval(getObj(id + 'Obj').title);
}
</script>
HTML:
<td><input id="__color_defObj" type="text" size="7" onChange="changeColor(__color_def, this.value);" name="color_def" value="#4B5D67" \></td>
<td id="__color_def"><script language="javascript">changeColor(__color_def, getObj(__color_defObj).value);</script> </td>
Ich habe jetzt die ganzen Inline-Geschichten entfernt und das obige Script wie folgt abgeändert:
Code:
var nocolor = 'none';
function getObj(id) {
return document.getElementById(id);
}
function init(){
for(i=0;i<count;i++){
var id = colorset[i];
var colorelement = getObj(id);
addEvent(colorelement,'change',function changeColor(id) {
var color = getObj(id + 'Obj').value;
var link = colorelement;
if (color == '') {
link.style.backgroundColor = nocolor;
link.style.color = nocolor;
color = nocolor;
} else {
link.style.backgroundColor = color;
link.style.color = color;
}
eval(getObj(id + 'Obj').title);
},false);
}
}
function addEvent(element, evType, func, useCaption)
{
if (element.addEventListener) {
element.addEventListener(evType, func, useCaption);
return true;
} else if (element.attachEvent) {
var retVal = element.attachEvent("on"+evType, func);
return retVal;
} else {
return false;
}
}
window.load = init;
Das Array colorset enthält die IDs der Tags, weil die dynamisch beim Seitenaufbau eingefügt werden. Es wird zusammen mit der Variablen count am Anfang des Dokuments ausgegeben.
Im Prinzip macht die Funktion nicht weiter als einen Hexadezimalwert aus einem Eingabefeld auszulesen und eine daneben liegende Tabellen-Zelle mit dem entsprechenden Farbwert einzufärben. Gewissermaßen um den User zu verdeutlichen, welche Farbe er da gerade eingestellt hat.
Vielleicht hat ja jemand einen Tipp woran es haken könnte.
Danke!
Zuletzt bearbeitet: