Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数中的变量_Javascript_Arrays_Function_Switch Statement_Increment - Fatal编程技术网

Javascript 函数中的变量

Javascript 函数中的变量,javascript,arrays,function,switch-statement,increment,Javascript,Arrays,Function,Switch Statement,Increment,嘿,伙计们,我是编程新手,我需要为学校建立一个网站。 我想在按下箭头键时打开下一页。所以我想, 当按下按钮时,我可以将URL放入一个数组中,增加索引。 不幸的是,当我按下向下键时,我得到了一些从1到3的随机数 const url = ['/#t1', '/#t2', '/#t3', './contact.html', './404.html']; var index = 0; $(document).keydown(function(e) { switch(e.which) {

嘿,伙计们,我是编程新手,我需要为学校建立一个网站。 我想在按下箭头键时打开下一页。所以我想, 当按下按钮时,我可以将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];
}

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

consturl=['/list','/of','/url'];
//在数组中查找当前url的索引
让index=url.indexOf(window.location.pathname)
如果(索引==-1){
//url不在数组中
windows.alert(“无效url”)
}
编辑:我同意Michael Geary的观点,这对于现实世界的网站来说是个坏主意

不要这样做! 你所做的是一个有趣的练习,但它打破了任何访问你网站的访问者可能期望的正常页面滚动

当我查看网页时,我使用向上和向下箭头键在其中滚动。例如,打开主页或单击向下箭头几次,然后单击向上箭头。这种滚动是网页应该如何工作的

也有一些例外。主页打开时,文本光标位于主输入字段中,向下箭头打开最近搜索的列表。这完全合理

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


如果你有一个很好的理由,我会很想听到的

需要认识到,当您切换到一个新页面时,当前代码将消失,新页面将加载一个全新的实例。因此,每次加载同一代码时,索引都将设置为零。您可以使用
sessionStorage
在页面之间保存数据。我同意charliefl的观点,听起来像是在重新加载。此外,我还将阻止默认值上移到函数的第一行。
location.hash=url[index]
用于哈希。好的,这很有意义,您知道如何阻止它吗?一切都在app.js文件中。你完全正确,这不是设计网站的好方法。我只是在享受乐趣,尝试不同的事情。我保证,我永远不会在现实世界的应用程序中使用它:)。编辑:我还需要提到的是,这些网站上没有启用滚动。这是学校的。完全易碎!唷!你把我吓坏了。但是是的,作为一个有趣的学习练习,这很酷。在这种情况下,@CWB发布的解决方案非常好。