Wahrscheinlich liegts daran dass du die Funktion zeigeFarbe() neu definierst und sie dann als Parameter fest "blau" enthält.
Genau!Gültigkeitsbereich:
zeigeFarbe -> GLOBAL
var zeigeFarbe -> LOKALEin "var" sollte das Problem lösen.
Gruß
peter
Ja das ganze hat auch einen praktischen Sinn. Ich habe meinen Code nur bis auf das Problem reduziert. Eigentlich hab ich eine Klasse Analogmeter, die mir ein entsprechendes Analogmeter mit Raphael zeichnet. Da das ganze aber ziemlich unübersichtlich geworden ist in einer Klasse hab ich das mal refaktorisiert. Heraus kam dann eine solche Struktur:
function Analogmeter(){
skala1 = new Skala("Ampere");
skala2 = new Skala("Volt");
skala1.zeichneSkala();
}
function Skala(name){
zeichneName = function(){
alert(name);
}
this.zeichneSkala = function(){
zeichneSkalenstriche();
zeichneName();
zeichneKreisbogen();
}
}
Ich denke das macht schon Sinn so. Für Vorschläge bin ich aber immer offen ;-)
Und was die Lösung angeht: mit var vor jeder privaten Funktion klappt es tatsächlich, vielen Dank!
Aber ich verstehe nicht so recht wie eine private Funktion global definiert sein kann?! Und ist dann this.zeichneSkala() bzw. this.farbe() auch global definiert?