我试图执行以下操作:
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'/>
答案 0 :(得分:2)
每次进行循环时,您都会重新定义element
。当你在每个事件函数中使用元素时,这意味着函数将在函数执行时使用元素的值执行,因此element
将始终引用最后一个值element
,这将是是elements
中的最后一个元素。因此,如果elements
中的最后一个元素的值为''
,那么输出将为''
。
但不仅如此,您实际上并没有返回element.value
,而只是将其作为局部变量保留在处理函数中。你应该替换
var value = element.value;
使用
return element.value;
或者
console.log(element.value);