2013-01-09 3 views
1

저는 Javascript를 처음 사용하고 간단한 photoviewer, 슬라이드 쇼 응용 프로그램을 만들려고합니다. 나는 아마도 내가 알지 못하는 코드에서 오류/잘못된 관행을 가지고있을 것이다. 슬라이드 쇼 버튼의 이벤트가 발생하고 콘솔의 출력을 볼 수 있지만 무작위 슬라이드 쇼 버튼의 이벤트는 실행되지 않습니다.입력 버튼 onclick 이벤트가 실행되지 않습니다.

HTML5는

<form> 
    <div id="controls"> 
     <input type="button" id="slideshow" value="Slide Show" /> 
     <input type="button" id="randomSlideshow" value="Random Slide Show" /> 
    </div> 
</form> 
<script src="js/PhotoViewer.js"></script> 
</body> 

JS는 onclick 핸들러 함수를 기대하고있다

var photosArrayGlobal = new Array(); 
var photoIndexGlobal = 0; 
var displayGlobal; 

window.onload = main; 

function main() { 
    "use strict"; 
    document.getElementById("slideshow").onclick = getArrayPhotosNames; 

    document.getElementById("randomSlideshow").onclick = randomize(photosArrayGlobal); 

    displayGlobal = document.getElementById("myImage"); 

    document.getElementById("nextSlide").onclick = function() { 
    displayGlobal.setAttribute("src", photosArrayGlobal[1]); //Test value, image 2 
    }; 
} 

function getArrayPhotosNames() { 
    var folderName = document.getElementById("photoFolder").value; 
    var commonName = document.getElementById("commonName").value; 
    var startNum = document.getElementById("startNum").value; 
    var endNum = document.getElementById("endNum").value; 
    var j = 0; 

    if (startNum > endNum) { 
    alert("Invalid Numbers"); 
    } 

    var nameArray = new Array(); 

    for (var i = startNum; i <= endNum; i++) { 
    nameArray[j] = folderName + commonName + i + ".jpg"; 
    j++; 
    } 

    photosArrayGlobal = nameArray.slice(); 
    console.log(photosArrayGlobal); 

    return nameArray; 
} 

function randomize(dataArray) { 
    var i = dataArray.length; 
    var j, tempi, tempj; 
    if (i === 0) { 
    return false; 
    } 

    while (--i) { 
    j = Math.floor(Math.random() * (i + 1)); 
    tempi = dataArray[i]; 
    tempj = dataArray[j]; 
    dataArray[i] = tempj; 
    dataArray[j] = tempi; 
    } 
console.log(dataArray); 

} 

답변

1

을 니펫을,하지만 당신은 (undefined을 될 일이) 그것에게 randomize() 함수에서 반환 된 값을 전달하는 니펫을 . 다음과 같이 변경하십시오.

document.getElementById("randomSlideshow").onclick = function() { 
    randomize(photosArrayGlobal); 
}; 
+0

굉장! 고맙습니다. Java/Eclipse 조합으로 코드를 디버깅하고 이와 같은 문제를 파악할 수 있습니까? – devcoder

+0

예,이 작업을 수행 할 수있는 도구가 많이 있습니다. 개인적으로 Google 크롬 및 내장 된 개발자 도구를 사용하여 페이지를 디버깅합니다. (도구를 불러 오려면 마우스 오른쪽 버튼으로 클릭하고 "요소 검사"또는 Ctrl + Shift + J를 클릭하고 "소스"탭으로 전환하십시오.) – Lukas

관련 문제