JQueryl - Div wird nich immer aktualisiert

daniel_sun

Erfahrenes Mitglied
Hallo,

ich habe ein Problem mit JQuery und der Aktualisierung von Divs. Ich habe 3 Divs, die in einem JCarousel rotiert werden:

HTML:
<script type="text/javascript">
    $(document).ready(function() {
        $('#car').jcarousel({
          itemLoadCallback: calendar_itemLoadCallbackFunction,
          wrap: 'circular'
        });
    });
  </script>

<ul id="car" class="jcarousel-skin-tango">
          <li>
              <div id="entry_1_date" class="date".</div>
          </li>
          <li>
              <div id="entry_2_date" class="date"></div>
          </li>
          <li>
              <div id="entry_3_date" class="date"></div>
          </li>
        </ul>

Das rotieren ect. funktioniert auch einwandfrei. Nun habe ich einen Callbackhandler (in einem externen Skript) geschieben und eingebunden. Dieser soll bei der Initialisierung im 1. Div das aktuelle Datum und in den 2 anderen die Folgedaten darstellen. Das Referenzdatum des jeweiligen Deierblocks soll immmer das Datum im 1. div sein:

Java:
//Globals
dayName = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch","Donnerstag", "Freitag", "Samstag");
referenceDate = new Date()

//Callbackhandler
function calendar_itemLoadCallbackFunction(carousel, state){
	
	switch(state){
		case 'init':
			calendar_init();
			break;
		case 'next':
			calendar_next();
			break;
		case 'prev':
			calendar_prev();
			break;
	}
}

//Function to initialize the calendar
function calendar_init(){
	
	setCalendarDate( referenceDate );
}

//Function to step forward
function calendar_next(){
	
	referenceDate.setDate( referenceDate.getDate() + 3 );
	setCalendarDate( referenceDate );
}

//Function to set backwards
function calendar_prev(){
	
	referenceDate.setDate(referenceDate.getDate() - 3);
	setCalendarDate( referenceDate );
}

//Setter for Date
function setCalendarDate(d){
	alert(referenceDate);
	for(i = 1; i <= 3; i++){
		$('#entry_' + i + '_date').text( dayName[d.getDay()] + " den " + $.format.date( d, "dd.MM.yyyy" ) );
		d.setDate( d.getDate() + 1 );
	}
	d.setDate( d.getDate() - 3 );
}

Die Initrialiserung funktioniert aber nun hab ich 2 Probleme:

1. Wenn ich den Werte d in der Funktion ändere, ändert sich auch das Referenzdarum (Daher mache ich zurzeit in der letzten Zeile: d.setDate( d.getDate() - 3 );). Ich denke das hat was mit Mutable und Imutable (kenne ich aus Java) zu tun, ich weis aber nicht wie ich das in JavaScript behoben bekomme.

2. Laut dem Alert ist das Referenzdatum (Div 1) immer richtig. Sprich wenn ich weiter schalte ist des drei Tage weiter etc. Leider werden die Divs nicht immer aktualisiert. Entwerde aktualisieren sich alle 3 oder keins. Gerade nach der initialisierung oder bei einem richtungswechsel harkt es. Man muss dann erst 1 - 2 mal weiterschalten dann funktioniert es wieder.

Bsp:
Initialisierung mit 12.02. 13.02 14.02 | Alert (12.02)
Weiter: 12.02. 13.02 14.02 | Alert (15.02)
Weiter: 12.02. 13.02 14.02 | Alert (18.02)
Weiter: 21.02 22.02 23.02 | Alert (21.02)


Was mache ich falsch?

Gruß
daniel_sun
 
Zurück