【问题标题】:Input Button onclick event not firing输入按钮 onclick 事件未触发
【发布时间】:2023-03-09 17:40:01
【问题描述】:

我对 Javascript 还很陌生,正在尝试构建一个简单的照片查看器、幻灯片应用程序。我可能在代码中存在我还不知道的错误/错误做法。幻灯片按钮上的事件触发,我可以在控制台中看到输出,但是随机幻灯片按钮上的事件不会触发。

HTML5 sn-p

<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 sn-p

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);

}

【问题讨论】:

    标签: javascript html events javascript-events


    【解决方案1】:

    onclick 处理程序需要一个函数,但您将randomize() 函数(恰好是undefined)返回的值传递给它。将其更改为以下内容:

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

    【讨论】:

    • 太棒了!谢谢你。是否可以像使用 Java/Eclipse 组合一样调试代码并找出类似的问题?
    • 是的,有很多工具可以做到这一点。我个人使用 Google Chrome 及其内置的开发人员工具来调试页面。 (要调出工具,请右键单击并单击“检查元素”或 Ctrl+Shift+J 并切换到“源”选项卡。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多