observe function nicht richtig verstanden

Paspirgilis

Weißer Powerranger
Hallo,
Dies ist mein code:
Code:
for(i=0 ; i < $$(".listview .right_body .listview_calendar .days").length ; i++)
    $$(".listview .right_body .listview_calendar .days")[i].observe("click",openView.bind(i));

function openView(number)
    {
    for(ii=0 ; ii < $$(".listview .right_body .listview_view .entry").length ; ii++)
        $$(".listview .right_body .listview_view .entry")[ii].style.display = "none";
    alert(number);
    $$(".listview .right_body .listview_view .entry")[number].style.display = "block";
    }

doch er gibt nur folgendes aus:
[object MouseEvent]

Ich dachte so würde es gehen aber so geht es nicht.
vorher sah meins so aus:
Code:
for(i=0 ; i < $$(".listview .right_body .listview_calendar .days").length ; i++)
    $$(".listview .right_body .listview_calendar .days")[i].observe("click",function(){openView(i);});
aber so wars immer 31;

MFG
Mark Paspirgilis

PS: Das soll eigentlich von 1 bis 31 durchgehen und das alert is nur da zur Kontrolle.
 
Hi,

bind erwartet als Parameter zunächst das Objekt, an das die optional folgenden Argumente gebunden werden sollen. In deinem Fall kann das über die Referenz this erfolgen.
Code:
$$(".listview .right_body .listview_calendar .days")[i].observe("click", openView.bind(this, i));

Der Zugriff in der aufgerufenen Funktion kann über das Objekt arguments erfolgen.
Code:
function openView(){
  alert("Index i = " + openView.arguments[0]);
}

Ciao
Quaese
 

Neue Beiträge

Zurück