Javascript 输入按钮onclick事件未触发
我对Javascript相当陌生,正在尝试构建一个简单的photoviewer、幻灯片应用程序。我可能在代码中有一些我还不知道的错误/错误实践。“幻灯片放映上的事件”按钮启动,我可以在控制台中看到输出,但是“随机幻灯片放映”按钮上的事件不会启动 HTML5片段Javascript 输入按钮onclick事件未触发,javascript,html,events,javascript-events,Javascript,Html,Events,Javascript Events,我对Javascript相当陌生,正在尝试构建一个简单的photoviewer、幻灯片应用程序。我可能在代码中有一些我还不知道的错误/错误实践。“幻灯片放映上的事件”按钮启动,我可以在控制台中看到输出,但是“随机幻灯片放映”按钮上的事件不会启动 HTML5片段 <form> <div id="controls"> <input type="button" id="slideshow" value="Slide Show" />
<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代码段
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);
}
var photosArrayGlobal=new Array();
var photoIndexGlobal=0;
var显示全球;
window.onload=main;
函数main(){
“严格使用”;
document.getElementById(“幻灯片放映”).onclick=getArrayPhotosNames;
document.getElementById(“randomSlideshow”).onclick=随机化(PhotoArrayGlobal);
displayGlobal=document.getElementById(“myImage”);
document.getElementById(“nextSlide”).onclick=function(){
displayGlobal.setAttribute(“src”,PhotoArrayGlobal[1]);//测试值,图2
};
}
函数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;
如果(开始数>结束数){
警报(“无效号码”);
}
var nameArray=新数组();
对于(var i=startNum;i的onclick
处理程序需要一个函数,但您正在传递从randomize()
函数返回的值(该函数恰好是未定义的
)。将其更改为以下内容:
document.getElementById("randomSlideshow").onclick = function() {
randomize(photosArrayGlobal);
};
onclick
处理程序需要一个函数,但您正在向它传递从randomize()
函数返回的值(该函数恰好是未定义的
)。将其更改为以下内容:
document.getElementById("randomSlideshow").onclick = function() {
randomize(photosArrayGlobal);
};
太棒了!谢谢。是否可以像Java/Eclipse组合一样调试代码并解决类似问题?是的,有很多工具可以做到这一点。我个人使用Google Chrome及其内置的开发人员工具来调试页面。(要打开工具,右击并单击“inspect element”或者Ctrl+Shift+J并切换到“源代码”选项卡。)太棒了!谢谢。是否可以像Java/Eclipse组合一样调试代码并解决类似问题?是的,有很多工具可以做到这一点。我个人使用Google Chrome及其内置开发工具来调试页面。(要打开工具,请右键单击并单击“检查元素”或Ctrl+Shift+J,然后切换到“源”选项卡。)