gpt4 book ai didi

javascript - 为什么循环将最后一个索引元素的引用分配给?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:48:23 24 4
gpt4 key购买 nike

<分区>

我想为我的所有标签添加一个事件监听器,每个标签都传递一个对自身的引用 作为 even 被触发时的参数。这是我写的函数:

function validateDigitsFeature()
{
// Add the event listeners to input tags
// Get the array of input tags
var inputTags = document.getElementsByClassName('validateInput');
var tagId;
// Loop through them, adding the onkeypress event listener to each one
for (var i = 0; i < inputTags.length; i++)
{
// Give each input element an id
tagId = inputTags[i].id = 'input_id_' + i;
inputTags[i].addEventListener('keyup', function(){isNumberOrDot(event, tagId);}, false);
}
}

基本上该函数应该执行以下操作:

  1. 将所有具有指定类名的输入标签存储在一个数组中
  2. 遍历数组,为每个标签添加一个id
  3. 使用 isNumberOrDot(event, tagId) 处理程序添加 onkeyup 事件监听器。

问题

添加了 onkeyup 事件,但每个事件的处理程序总是引用数组最后一个元素的 tagId

问题

代码/逻辑有什么问题?如何解决?

注意事项

当然这个问题与 JavaScript Closure in loops 有关,虽然这个问题可能有更一般的答案,但它特定于所使用的事件监听器。对于更高级的开发人员,可能很容易将通用解决方案应用于此问题。但对我来说,其他解决方案仍然没有提供完整的解释,甚至没有奏效。

提前谢谢你。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com