Javascript 在函数中递增一个变量

Javascript increment a variable in a function

大家好,我是编程新手,我需要为学校制作一个网站。 我想在按下箭头键时打开下一页。所以我想, 当按下按钮时,我可以将 URL 放入一个数组中并增加索引。 不幸的是,当我按下向下键时,我得到了一些从 1 到 3 的随机数。

const url = ['/#t1', '/#t2', '/#t3', './contact.html', './404.html'];

var index = 0;

$(document).keydown(function(e) {
    switch(e.which) {
       case 38: // up
           up();
       break;

       case 40: // down
           down();
       break;

       default: return; 
   }
   e.preventDefault();
});

function up() {
    index = index - 1;
    alert(index);
    window.location.href = url[index];
}

function down() {
    index = index + 1;
    alert(index);
    window.location.href = url[index];
}

在不使用存储的情况下解决此问题的一种快速方法是在数组中查找索引而不是跟踪它。你可以这样做:

const url = ['/list', '/of', '/urls'];

//find index of current url in array
let index = url.indexOf(window.location.pathname)

if(index == -1){
 //url is not in the array
 windows.alert("invalid url")
}

编辑:我同意 Michael Geary 的观点,这对于真实世界的网站来说是个坏主意

不要这样做!

您正在做的是一个有趣的练习,但它打破了您网站的任何访问者可能希望工作的正常页面滚动。

当我查看网页时,我使用向上和向下箭头键滚动浏览它。例如,打开 Stack Overflow home page or Hacker News 并点击几次向下箭头,然后点击向上箭头。滚动是网页应该如何工作。

有一些例外。 Google 主页打开,文本光标位于主输入字段中,向下箭头打开最近搜索列表。太有道理了。

但是让向下箭头跳转到页面的一个全新部分 - 或者完全跳转到另一个页面! - 不是游客所期望的。除非你有充分的理由,否则不要这样做。

如果你有充分的理由,我会很想听听的! :-)