javascript 事件监听器函数参数

标签 javascript parameter-passing event-listener

我正在尝试使用带有参数的 inputListener 函数将事件监听器添加到 html 上的输入元素,如下所示。但这种方法行不通。我不明白为什么我无法将参数传递给事件监听器函数。

for (let index = 0; index<inputElements.length; index ++) {
  inputElements[index].addEventListener("input",inputListener(index));
}

function inputListener(index){
  if (inputElements[index].value.length>=5) {
      inputElements[index].style.border="none";
  }
  else{
       inputElements[index].style.border="solid 3px red";
 }
}`

最佳答案

您需要使用 this 从事件监听器内访问元素引用,而不是通过在监听器函数中传递 index 来访问。由于您正在验证 input 元素内的文本长度,因此您可以使用 keyup 事件监听器来验证文本的长度。

var inputElements = document.querySelectorAll('input');
for (let index = 0; index<inputElements.length; index ++) {
  inputElements[index].addEventListener("keyup",inputListener);
}

function inputListener(){
  if (this.value.length>=5) {
      this.style.border="none";
  }
  else{
       this.style.border="solid 3px red";
 }
}
<input type='text' />
<input type='text' />
<input type='text' />
<input type='text' />
<input type='text' />
<input type='text' />
<input type='text' />

关于javascript 事件监听器函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51453465/

相关文章:

javascript - 从 JS 文件将 Chart.js 折线图添加到 Jinja2/Flask html 页面

javascript - 模拟移动连接

perl - 为什么从@_ 转移的值不是别名?

c++ - 将 NULL 传递给枚举类型输入参数 - C++

python - 如何使用 nargs ='+' 解析多个位置参数

java - 在 get 方法内部或外部添加监听器

javascript - 对齐文本中的图像而行高没有问题(聊天框中的笑脸)

javascript - 如何让网站认为 PhantomJS 不是 iPhone?

java - java中的事件监听器

Java USB 事件监听器,用于在 USB 插入时收到通知