Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: useless setInterval call
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
marcini82
Witam!

Usiluje napisac sobie obiekt sluzacy do przesuwania tekstu wewnatrz diva.
Oto zaczatki kodu:

  1. function Scroller(divId, direction) {
  2.  
  3. this.divId = divId;
  4. this.direction = direction;
  5. this.timeout = 0;
  6. this.interval = 0;
  7. this.startDelay = 0;
  8. this.stopDelay = 8000;
  9. this.stepDelay = 50;
  10.  
  11. this.startScrollNow = function(){
  12. var div = document.getElementById(this.divId);
  13. //div.scrollLeft = 0;
  14. this.interval = setInterval(this.nextStep, 25); // tu zglasza blad
  15. }
  16.  
  17. this.nextStep = function(){
  18. var staryScroll = div.scrollLeft;
  19. div.scrollLeft++;
  20.  
  21. }
  22.  
  23. }

Potem sobie to uruchamiam:
  1. var newsScroll = new Scroller("pasek_news", "left");
  2. newsScroll.startScrollNow();


Problem w tym, ze w linii gdzie jest setInterval() konsola js w Firefoksie wyrzuca blad:
Cytat
Błąd: useless setInterval call (missing quotes around argument?)


Jak zamiast this.nextStep dam nextStep, to pisze ze nie ma takiej funkcji...

Co jest zle?
revyag
Zrób taki trik snitch.gif

Kod
this.startScrollNow = function(){
    var div = document.getElementById(this.divId);
    var obj = this;
    //div.scrollLeft = 0;
    this.interval = setInterval(function(){ obj.nextStep() }, 25); // tu zglasza blad
}
marcini82
Teraz wywala mi blad:
Cytat
obj.nextStep is not a function

I ten blad wypisuje kilkadziesiat razy na sekunde...
smentek
obj jest obiektem a nie funkcją wiec nie możesz go wywołać jako funkcji.

Zamień obj.nextStep(); na obj.nextStep; i będzie działać.

  1. <?php
  2. this.startScrollNow = function(){
  3.    var div = document.getElementById(this.divId);
  4.    var obj = this;
  5.    //div.scrollLeft = 0;
  6.    this.interval = setInterval(function(){ obj.nextStep; }, 25); // tu zglasza blad
  7. }
  8. ?>
erix
Jak już bez nawiasów, to tak:
Kod
this.interval = setInterval(obj.nextStep, 25); // tu zglasza blad

I musi działać; wywołuję tak różne zdarzenia od dawna i zawsze działa.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.