[英]JS increment an array down by 1
let span = document.querySelector('.myspan')
let arr = [1, 2, 3]
document.addEventListener('keydown', function(event){
var x = arr.length
if (event.keyCode === 40) { // down
span.innerHTML = arr[x-1]
x--
}
})
<span class="myspan"></span>
当你按下down
键盘,跨度应显示的最后一个项目arr
数组。 这里的问题是,当你再次按下,x值始终是相同的3
凭什么我succeffuly一个增减,所以我能最后在第二个之前看到该项目down
机等?
你要么:
有一个变量,你记得你的位置,或者
修改数组
对于#1,您将从(例如)开始;
let pos = arr.length;
与arr
一起。 然后在您的事件处理程序中:
if (pos > 0) {
span.innerHTML = arr[--pos]; // `--pos` modifies `pos`, then uses the result
}
对于 #2,如果要修改数组,可以使用pop
方法获取最后一个条目并将其删除。 所以:
if (arr.length) {
span.innerHTML = arr.pop();
}
您可以添加一个全局变量indexLocation
,它会在您按下向下按钮时不断调整。 我添加了一个额外的函数adjustIndexLocation()
来进行必要的计算。
let span = document.querySelector('.myspan') let arr = [1, 2, 3] var indexLocation = -1; document.addEventListener('keydown', function(event){ var arrayLength = arr.length; if (event.keyCode === 40) { adjustIndexLocation(arrayLength); span.innerHTML = arr[ indexLocation ]; } }) function adjustIndexLocation(arrayLength) { indexLocation--; if(indexLocation < 0) indexLocation = arrayLength - 1; }
<span class="myspan"></span>
.pop 从数组中删除最后一个元素并返回它
document.addEventListener('keydown', function(e){
if (e.keyCode === 40) { // down
alert(arr.pop())
}
})
您正在减少x
的值而arr.length
的值。
x
不是对arr.length
的引用。
但是,从数组中读取最后一个值,然后将值降低为两个单独的操作,这是解决问题的一种非常冗长的方法。 只需使用pop
方法。
span.innerHTML = arr.pop();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.