2016-11-11 1 views
0

저는 자바 스크립트로 간단한 자동 실행 슬라이드 쇼를 제작하려고합니다. 다음 코드를 실행하면 최대 호출 스택 크기가 초과되었다는 오류 메시지가 나타납니다. 정확히 무슨 뜻인지는 모르지만 컴퓨터가 이미지의 위치를 ​​찾지 못하면 undefined으로 표시합니다. 내가 어디로 잘못 가고 있는지 말해줘.javascript로 만든 슬라이드 쇼가 호출 스택을 초과합니다.

setTimeout(slideshow(), 3000); 
        ^^ 

에 도움

var slide = 0 /* the tracker for every picture */ 
var left_arrow = document.getElementById("arrow_left") 
var right_arrow = document.getElementById("arrow_right") 
var gallery = document.getElementById("picture") 
slideshow(0); 
length = images.length - 1 

function slideshow(slide) { 
    images = ["blackchicken.jpg", "bantamchicken.jpg", "goldenegg.jpeg"] 
    console.log(slide) 
    pic = '<img src="' + images[slide] + '">' 
    console.log(pic) 
    gallery.innerHTML = pic 
    slide += 1; 
    if (slide == length) { 
    slide = 0 
    } 
    setTimeout(slideshow(), 3000); // Change image every 3 seconds 
} 
+4

'setTimeout '과 함께'()'를 사용하지 마십시오. 'setTimeout (slideshow, 3000);'물론, 코드에 다른 문제가 있지만, 이것은 즉각적인 문제를 해결해야합니다. – Gavin

+3

@Gavin이 주석의 확장으로 사용됩니다 :'()'를 사용하면 함수가 실행되고'slideshow' 함수가 계속해서 더 많은 'slideshow'함수를 호출하는 루프로 들어갑니다. 'slideshow' 만 사용한다면 당신은 그 함수를 참조하고 그것을 실행하지 않습니다. 그래서'setTimeout'은 필요할 때만'slideshow' 함수를 호출합니다. –

+0

@HugoFarji @HugoFarji 설명을 추가하는 것에 대해 생각했지만 당신은 그것을 위해했습니다 . 감사! – Gavin

답변

2

기능 자체를 호출 해 주셔서 감사합니다 그리고이 문제를 설명하는 무한 루프에서 스택을 작성한다.

관련 문제