javascript - 如何通过按向上箭头 (Javascript) 获取最新输入
问题描述
我怎样才能得到我按顺序输入的最新输入。例如:我声明了一个包含 20 个元素的数组,当我输入一些内容时,我删除了数组的第一个元素,并在最后添加了我刚刚输入的输入。
因此,当我按下向上箭头按钮时,数组的最后一个元素将作为新输入出现。如果我再按一次向上箭头,我希望我的输入更改为倒数第二个元素,依此类推。
它在我的 jsfiddle 链接中不起作用。它从数组中输出另一个元素。
var singleValues;
var theInputsNumber = 19;
var latestInputs = new Array(20);
latestInputs.fill("Latest");
function clickMe(){
singleValues = $( "#input" ).val();
var c = latestInputs.shift();
latestInputs.push(singleValues);
$( "#output" ).append( singleValues);
$("#input").prop('value', '');
}
$(document).on('keypress',function(e) {
$('#input').bind('keydown', function(e) {
if (e.which === 38) {
$("#input").prop('value', latestInputs[theInputsNumber]);
theInputsNumber--;
}
});
if(e.which == 13) {
theInputsNumber=19;
clickMe();
}
});
<!DOCTYPE html>
<html>
<head>
<title>Think Fast Trivia</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="jqueryScript.js"></script>
<link rel="stylesheet" href="styles.css">
<meta charset="UTF-8" name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div id="output" class="item1"></div>
<input autofocus type="text" name="input" id="input" />
<button id="send" onclick="clickMe()">Send</button>
</body>
</html>
解决方案
您错过了必须确定(逻辑测试)计数器(theInputsNumber
)的值才能在堆栈的顶部(和底部)重置的想法。
我重命名theInputsNumber
了计数器并提供了向上键和向下键功能。我也没有将数组大小限制为 20,因为无论如何这都不会产生影响(数组大小不受其他语言的限制)。
编辑(基于评论):我已将所有内容放在 HTML 中,因此您可以将此内容保存到 HTML 文件中并使用浏览器打开。它可以在没有服务器的情况下正常工作。
<!DOCTYPE html>
<html>
<head>
<title>Think Fast Trivia</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<meta charset="UTF-8" name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div id="output" class="item1"></div>
<input autofocus type="text" name="input" id="input" />
<button id="send" onclick="clickMe()">Send</button>
<script>
var counter = 0;
var latestInputs = [];
function clickMe() {
let input = $("#input").val();
latestInputs.push(input);
$("#input").prop('value', '');
}
$('#input').bind('keydown', function(e) {
if (e.which === 38) {
$("#input").prop('value', previous());
} else if (e.which == 40) {
$("#input").prop('value', next());
} else if (e.which == 13) {
clickMe();
}
});
function previous() {
counter = (counter === 0) ? latestInputs.length - 1 : --counter;
return latestInputs[counter];
}
function next() {
counter = (counter === latestInputs.length - 1) ? 0 : ++counter ;
return latestInputs[counter];
}
</script>
</body>
</html>
推荐阅读
- java - 无法在 firebase 上上传多张图片的 addOnSuccessListener。即进入addOnFailureListener
- python - 在列表中搜索一个值并在 python 字典中找到它的键
- javascript - rxjs 的错误和完整方法如何工作?
- php - 如何在树枝模板中添加图像?
- docker - 由于多个错误,docker 上的 Redis 无法运行
- r - R循环:在单个表中合并工作表并在excel中导出
- gem5 - gem5中有cflush的替代品吗?
- search - 使用端到端加密时如何实现聊天中消息的搜索功能?
- azure - Azure 生命周期管理方案
- abp - abp 框架 (abp.io) 中 AbpSession.Use() 的替代方案