JS键盘滚动

时间:2017-08-26 08:20:00

标签: javascript jquery html keyboard-events

我想在id为scroll0的div`s和scroll2之间向下滚动:

在index.html,我有类似的东西:

<div id="scroll0"></div>
<div id="scroll1"></div>
<div id="scroll2"></div>

脚本是:

function scrollToAnchor(aid) {
$('html,body').animate({
    scrollTop: aid.offset().top
}, 'slow');
}

var count = 1;

$(document).keydown(function (event) {
var counter = count++;
var destinationDown = "#scroll" + counter;
var destinationTop = destinationDown //counter--;

if (event.keyCode === 40) {
    //Scroll down
    scrollToAnchor($(destinationDown));
} else if (event.keyCode === 38) {
    //Scroll up
    scrollToAnchor($(destinationTop));
}
});

向下滚动很好,但如何从不同的div向上滚动到顶部。

例如如何从id滚动到滚动1的滚动滚动滚动滚动到滚动0?

1 个答案:

答案 0 :(得分:0)

要处理上升,你需要不要总是立即增加计数器。

var counter = count++;

在完成按下的键之后必须完成此操作,如果键码是38,那么你将不得不从计数中减去而不是增加。

你还必须处理环绕,因为你只有3个div要滚动到,如果你在底部而你按下,你的代码将会破坏。

我的建议是首先将您的计数器更改为索引,并在您的keydown处理程序中执行以下操作:

  1. 检查是否按下了上/下
  2. 计算正确的下一个索引以滚动到(如果你在0,你按下你转到2.如果你在2,你按下,你会转到0.如果你在0,你按下,你去1等)
  3. 更新索引变量
  4. 滚动到新索引