我正在构建一个简单的todo应用程序,我是新在JavaScript和我陷入了一个问题。
我试图只对特定元素ID.like运行一次函数,
divs与IDs 1,2,3,4,5共5种。因此,我通过className访问它们,然后访问它们的ID。
然后,我将它们的id存储在一个变量中,并将其存储起来,以防止函数与前面的id一起运行。
page.html
function myFunction() {
// Used for getting last element of all the classes
var element = Array.from(document.querySelectorAll(".fields")).pop();
var previousId = element.id;
var executed = false
if (previousId === element.id) {
if (!executed) {
executed = true;
console.log("Run only once");
console.log(previousId);
}
}
}<input type="text" id="1" oninput="myFunction(id)" class="fields">
<input type="text" id="2" class="fields">
我想做什么?
我只尝试运行该函数一次,因为用户正在输入当前的输入字段。
我试着删除if (previousId === element.id) {,只运行if(!executed){,但也没有成功。
但是,每当我输入输入字段时,每次按下键,它都会执行。
我试过很多次了,但还是没有用。任何帮助都将不胜感激。提前谢谢你。
发布于 2022-04-29 10:31:20
您可以保存一个已经运行的id的数组,并对其进行检查。
let alreadyRunned = []
function myFunction(id) {
if (alreadyRunned.includes(id)) {
return;
}
alreadyRunned = [...alreadyRunned, id]
console.log("Run only once");
console.log(id);
}<input type="text" id="1" oninput="myFunction(1)" class="fields">
<input type="text" id="2" class="fields" oninput="myFunction(2)">
https://stackoverflow.com/questions/72056452
复制相似问题