[JavaScript] Prototype-Klasse/ Selectvalue onchange

Dieses Thema im Forum "Webentwicklung" wurde erstellt von hacker5, 15. Juli 2010 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 15. Juli 2010
    Prototype-Klasse/ Selectvalue onchange

    Hey, ich hab entweder eine Denkblockade oder einfach fehlendes Wissen. Ich passe mir ein Datepicker an mein Vorhaben um. Klappt bisher auch gut, schnell in den Quelltext eingelesen.


    Okay eine Änderung:

    Aufrufen tu ich das ganze so:
    HTML:
    self=this;
    my_select.onchange=function(){ self.moveSelectedMonthListener(this.value); };
    

    HTML:
    
    moveSelectedMonthListener: function(date) {
     var today = new Date();
    alert(date);
     return function(e) {
     var nextMonth = new Date(*gekürzt/sonst zu lang*);
    
     this.selectDate(nextMonth);
     }.bindAsEventListener(this);
     }
    
    
    
    
    Problem ist, dass nach dem ersten alert die Funktio nicht weiter läuft.
    Wieso geht er nicht weiter mit dem Part "return function(e) {" ?
     
  2. 15. Juli 2010
    AW: Prototype-Klasse/ Selectvalue onchange

    ich geh davon aus das er weitermacht mit return function ....
    aber ne funktion als rückgabewert alleine bringt ja nicht viel, du solltest die noch aufrufen ^^

    das würde sogar so gehen:
    Code:
    my_select.onchange=function(){ self.moveSelectedMonthListener(this.value)(); }
    aber ich denke du möchtest das eher so haben:
    Code:
    my_select.observe('change', this.moveSelectedMonthListener());
     
  3. 15. Juli 2010
    AW: Prototype-Klasse/ Selectvalue onchange

    Hey dank dir schonmal Murdoc. Einzige Problem ist, wie übergebe ich noch den Value von der Selectbox mit?

    Bei:
    Code:
    my_select.observe('change', this.moveSelectedMonthListener(this.value));
    mag Firefox nicht mehr und stirbt Ich muss iwie den Value mit übergeben.
    Wäre jetzt interessant wie ich das mache. Ich hab nur eine Lösung meine onchange Methode und das return function(e) wegzulassen.
     
  4. 15. Juli 2010
    AW: Prototype-Klasse/ Selectvalue onchange

    wieso musst du das den übergeben?

    this.options[this.selectedIndex].value <- warum nicht so?
     
  5. 15. Juli 2010
    AW: Prototype-Klasse/ Selectvalue onchange

    Weil ich iwie doof bin ^^ Sorry ich weiß gerade nicht wo ich this.options[this.selectedIndex].value weiterverabeiten soll. In dem "moveSelectedMonthListener" Part?
     
  6. 15. Juli 2010
    AW: Prototype-Klasse/ Selectvalue onchange

    Code:
    moveSelectedMonthListener: function(event, select) {
     var today = new Date();
     var date = select.options[select.selectedIndex].value;
     alert(date);
     
     var nextMonth = new Date(*gekürzt/sonst zu lang*);
     this.selectDate(nextMonth);
    }
    Code:
    my_select.observe('change', this.moveSelectedMonthListener.bindAsEventListener(this, my_select));
    hinweis: bindAsEventListener() funktioniert genauso wie bind(), also du kannst genauso parameter dranhängen. der einzige unterschied ist, dass ...Listener() das erste argument reserviert für das event-objekt.

    beispiel für bind:
    Code:
    function foo(bar) { alert(bar); }
    foo("hallo"); //hallo
    bar = foo.bind(null, "welt");
    bar(); //welt
    solche sachen kannst du umgehen, indem du elemente in solchen funktionen erneut über ihre id (oder selector) ansprichst. das dauert zwar insgesamt ein wenig länger (ms), aber es wird weniger ram beansprucht, da objekte innerhalb eines event-listeners gemütlich im ram verweilen bis a) der listener entfernt wird und der gc das objekt löscht oder b) die seite verlassen wird.
     
  7. 17. Juli 2010
    AW: Prototype-Klasse/ Selectvalue onchange

    Mercí Murdoc, hast mal wieder super geholfen, klappt natürlich.
    Jetzt hab ich auch endlich mal verstanden wofür man bind und bindAsEventListener benutzen kann. Wieder was gelernt. Nochmal danke.:]
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.