Javascript JS将数组向下递增1 let span=document.querySelector('.myspan')) 设arr=[1,2,3] document.addEventListener('keydown',函数(事件){ var x=arr.length 如果(event.keyCode==40){//down span.innerHTML=arr[x-1] x-- } })
在键盘上按下Javascript JS将数组向下递增1 let span=document.querySelector('.myspan')) 设arr=[1,2,3] document.addEventListener('keydown',函数(事件){ var x=arr.length 如果(event.keyCode==40){//down span.innerHTML=arr[x-1] x-- } }),javascript,Javascript,在键盘上按下down时,量程应显示arr数组的最后一项。这里的问题是,当您再次按下时,x值始终是相同的3,因此如何成功地将其减1,以便我可以在第二次按下时看到最后一个之前的项目,依此类推?.pop从数组中删除最后一个元素并返回它 let span = document.querySelector('.myspan') let arr = [1, 2, 3] document.addEventListener('keydown', function(event){ var x = arr.l
down
时,量程应显示arr
数组的最后一项。这里的问题是,当您再次按下时,x值始终是相同的3
,因此如何成功地将其减1,以便我可以在第二次按下时看到最后一个之前的项目,依此类推?.pop从数组中删除最后一个元素并返回它
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>
您正在减小x
的值,而不是arr.length
的值
x
不是对arr.length
的引用
从数组中读取最后一个值,然后作为两个独立的操作降低该值,这是解决该问题的一种非常冗长的方法。就用吧
你可以:
有一个你记得你的位置的变量,或者
修改数组
对于#1,您可以从(例如)开始
旁边arr
。然后在事件处理程序中:
let pos = arr.length;
对于#2,如果要修改数组,可以使用pop
方法获取最后一个条目并将其删除。因此:
if (pos > 0) {
span.innerHTML = arr[--pos]; // `--pos` modifies `pos`, then uses the result
}
您可以添加一个全局变量indexLocation
,该变量将在按下向下按钮时不断调整。我添加了一个额外的函数adjustIndexLocation()
,用于进行必要的计算
let span=document.querySelector('.myspan'))
设arr=[1,2,3]
var指数位置=-1;
document.addEventListener('keydown',函数(事件){
var arrayLength=阵列长度;
如果(event.keyCode===40){
调整索引位置(排列长度);
span.innerHTML=arr[indexLocation];
}
})
功能调整索引位置(阵列长度){
索引定位--;
如果(索引位置<0)
索引位置=阵列长度-1;
}
var x
永远不会打印数组中最后一项以外的任何内容。如果要持久化其值,请在事件侦听器外部声明它。您正在侦听器内部初始化x。这是你的问题。也可以使用let和const而不是var。好的编程将一个变量保留在侦听器之外,并在每次按键时将其递减。问题是我的数组有一组数据,这些数据是由其他事件动态添加的。。。所以我在数组中添加了它,以确保数组包含所有数据。当用户不断按下时,是否希望数组值在第一个元素处停止?这通常在假设我的数组位于事件侦听器之外的情况下起作用,但问题是我的数组包含一组由其他事件动态添加的数据。。。所以我在里面添加了它,以确保数组包含所有数据。不会在外面工作。我不明白这里的否决票。我们(在回答时)不知道用户是否希望保持数组不变(实际上,我想我现在也不知道)不过,似乎有人对此有相当坚定的看法。
let pos = arr.length;
if (pos > 0) {
span.innerHTML = arr[--pos]; // `--pos` modifies `pos`, then uses the result
}
if (arr.length) {
span.innerHTML = arr.pop();
}