Ankündigung

Einklappen
Keine Ankündigung bisher.

Uncaught TypeError: undefined is not a function

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Uncaught TypeError: undefined is not a function

    Hi Leute.

    Ich habe bei meiner JS Klasse den fehler, dass es innerhalb nicht die Function findet :/
    Code ausschnitt:
    Code:
    this.startSlide = function() {
    		clearInterval(this.interval);
    		this.interval = setInterval(function() {
    			this.nextSlide();
    		}, 1000);
    	}
    	
    	this.nextSlide = function() {
    		++this.currentSlide;
    		if(currentSlide <= this.max) {
    			this.switchTo(this.currentSlide);
    		} else {
    			this.currentSlide = 1;
    			this.switchTo(1);
    		}
    	}
    Der Fehler ist in Zeile 34, welche
    Code:
    this.nextSlide();
    ist. Habt ihr eine Ahnung?
    "Avoiding danger is no safer in the long run than outright exposure. Life is either a daring adventure, or nothing."
    - Helen Keller


  • #2
    Hier das ganze Script:
    Code:
    var jQ = false;
    if(typeof jQuery == 'function') {
    	jQ = true;
    }
    if(!jQ) {
    	alert('jQuery not included! Script exits now.');
    }
    
    var sliderCount = sliderMax;
    var i = 0;
    if(sliderCount == 'auto') {
    	sliderCount = $('.rt-newsslider-news').size();
    }
    
    function RTNewsSlider() {
    	this.currentSlide;
    	this.interval;
    	this.timeout;
    	this.oldSlide;
    	this.max;
    	
    	this.setMax = function(max) {
    		this.max = max;
    	}
    	
    	this.nextSlide = function() {
    		++this.currentSlide;
    		if(currentSlide <= this.max) {
    			this.switchToSlide(this.currentSlide);
    		} else {
    			this.currentSlide = 1;
    			this.switchToSlide(1);
    		}
    	}
    	
    	this.startSlide = function() {
    		clearInterval(this.interval);
    		this.interval = setInterval(function() {
    			this.nextSlide();
    		}, 1000);
    	}
    	
    	this.switchToSlide = function(number) {
    		this.switchTo(number);
    		this.startSlide();
    	}
    	
    	this.switchTo = function(current) {
    		clearTimeout(this.timeout);
    		this.currentSlide = current;
    		
    		$('.rt-newsslider-switch').removeClass('rt-newsslider-switch-active');
    		$('.rt-newsslider-switch #'+current).animate({
    			backgroundColor: 'rgba(255,255,255,0.6)'
    		}, 400);
    		
    		$('.rt-newsslider-switch.n'+current).animate({
    			backgroundColor: '#FFF'
    		}, 400);
    		this.timeout = setTimeout(function() {
    			$('#rt-newsslider-main > .rt-newsslider-news').stop(true, true).fadeOut(800);
    			$('#rt-newsslider-main > .rt-newsslider-news:nth-child(\''+current+'\')').stop(true, true).fadeIn(fade).css('display','block');	
    		}, 250);
    	}
    }
    
    $(function() {
    	var slides = $('.rt-newsslider-slides');
    	$('.rt-newsslider-news').each(function(i, e) {
    		++i;
    		slides.html(slides.html()+'<div class="rt-newsslider-switch" id="'+i+'" onClick="rtNewssliderSwitchTo(\''+i+'\')"></div>');
    	});
    	
    	$('.rt-newsslider-switch #1').addClass('rt-newsslider-switch-active');
    });
    var RTNewsSlider = new RTNewsSlider();
    RTNewsSlider.setMax(sliderCount);
    function rtNewssliderSwitchTo(number) {
    	if(RTNewsSlider.currentSlide != number) {
    		RTNewsSlider.switchToSlide(number);
    	}
    }
    
    RTNewsSlider.startSlide();
    "Avoiding danger is no safer in the long run than outright exposure. Life is either a daring adventure, or nothing."
    - Helen Keller

    Kommentar


    • #3
      Code:
      		this.interval = setInterval(function() {
      			this.nextSlide();
      		}, 1000);
      man, ich hab ewig gesucht um die drei zeilen zu finden, im ersten post waren sie gar nicht bei, und im zweiten musste man zählen bis zum getno.
      sinnvoll gekürzten code posten, bitte - wenn immer möglich.
      also als fortgeschrittener solltest du die fehlermedung posten können, (sorry hab ich übersehen, steht ja da)und mal sowas wie
      Code:
       console.debug(this)
      in deinen code reinhauen können.

      kann auch sein, dass ich irre, aber ich glaube da liegt der hund begraben.

      Kommentar


      • #4
        Zitat von moma Beitrag anzeigen
        man, ich hab ewig gesucht um die drei zeilen zu finden, im ersten post waren sie gar nicht bei, und im zweiten musste man zählen bis zum getno.
        sinnvoll gekürzten code posten, bitte - wenn immer möglich.
        also als fortgeschrittener solltest du die fehlermedung posten können, (sorry hab ich übersehen, steht ja da)und mal sowas wie
        Code:
         console.debug(this)
        in deinen code reinhauen können.

        kann auch sein, dass ich irre, aber ich glaube da liegt der hund begraben.
        Nope, hilft alles nichts.
        "Avoiding danger is no safer in the long run than outright exposure. Life is either a daring adventure, or nothing."
        - Helen Keller

        Kommentar


        • #5
          moma wollte damit sagen, dass du durch das Closure im setInterval in einem anderen Kontext bist und this nicht mehr die "Klasse" ist die du an dieser Stelle erwartest.

          Kommentar

          Lädt...
          X