【问题标题】:get elements by class name and store element in variable [duplicate]按类名获取元素并将元素存储在变量中[重复]
【发布时间】:2015-10-09 21:50:03
【问题描述】:

我正在尝试执行以下操作:

function() {
 var elements = document.getElementsByClassName('class');
 var length = elements.length;
 for (var i = 0; i < length; i++) {
  var element = elements[i];
  element.addEventListener('input', function() { return handleInputEvent(element); }, false);
 }
}
function handleInputEvent(element) {
 var value = element.value; // empty string
}

但是当我尝试获取元素的值时,即使我正在输入数字或字母,它也会以空字符串的形式返回。有什么想法吗?

html 是一堆输入

<input type='text' class='class'/>
<input type='text' class='class'/>
<input type='text' class='class'/>

【问题讨论】:

  • 可以包含h​​tml吗?
  • @depperm 确定一秒
  • 为什么function() 没有标识符/名称?我认为它不会在不被调用的情况下运行。
  • @jlam55555 这不是重点,我的代码中有函数名称
  • 你调用那个函数了吗?只是确保。

标签: javascript html


【解决方案1】:

每次循环时,您都在重新定义 element。当你在每个事件函数中使用 element 时,意味着函数将在函数执行时使用 element 的值执行,所以element 将始终引用最后一个值element,也就是最后一个元素在elements。因此,如果elements 中的最后一个元素的值为'',则输出将为''

但不仅如此,您实际上并没有返回element.value,您只是将其作为局部变量保留在处理函数中。你应该替换

var value = element.value;

return element.value;

或者

console.log(element.value);

【讨论】:

  • 成功了,很好。我刚刚测试过,这似乎正在发生。
  • 但是elementhandleInputElements() 中作为参数传递;它不是全局变量。它具有本地范围 - 它不会受到 elements[] 数组的影响。这是错误的。
  • 我不需要返回值,我在函数中做其他事情,但这超出了问题的范围
  • @jlam55555 我知道我只涵盖了部分问题,我在阅读您的评论后进行了编辑。
  • @AbdulAhmad 好吧,这还不清楚。看起来这似乎是问题之一。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 2019-03-11
  • 2021-11-10
  • 1970-01-01
相关资源
最近更新 更多