javascript - 如何在事件侦听器定义的事件上运行不带参数的函数
问题描述
我有一个创建input
元素并将其附加到另一个元素的函数。
我正在尝试这样做,以便如果将数组用作此函数的参数,则将数组中的数据用作value
元素的input
。如果没有将数组指定为参数,则输入值应为空。
这是我的代码
HTML
<div id="app></div>
Javascript
let app = document.getElementById('app')
let people = [["Adam",10],["Peter",90],["John",30],["Stephen",50]]
for (var key in people) {
showName(people[key])
}
function showName(pData) {
let singleName = document.createElement('input')
if (typeof pData !== 'undefined') {
singleName.value = pData[0]
}
app.append(singleName)
}
let button = document.createElement('button')
button.addEventListener('click',showName)
button.innerHTML = "Add name"
app.prepend(button)
这很好用,我可以运行带有参数和不带参数的函数,它可以按预期工作。
但是,当我将函数设置为通过事件侦听器触发并且没有参数时,我可以输入值为“未定义”的输入,如果我通过编写 showName() 来运行该函数,则情况并非如此。
因此,这使我相信当事件通过事件侦听器触发时,正在传递某种参数。是这样吗?如果是这样,我该如何让按钮创建一个input
没有价值的元素?
解决方案
因此,这使我相信当事件通过事件侦听器触发时,正在传递某种参数。是这样吗?
是的,您的函数将传递事件对象,其中包含有关发生的点击的信息
如果是这样,我该如何使按钮创建一个没有值的输入元素?
与其将 showName 直接传递给 addEventListener,不如创建一个新函数。该函数将忽略事件对象,并调用不带参数的 showName:
button.addEventListener('click', (event) => showName())
// Or:
button.addEventListener('click', () => showName())
推荐阅读
- spring - MQTT Apache Camel 路由中的错误导致应用程序停止
- python-2.7 - 使用 stooq 的 pandas 数据读取器发生了什么?
- vim - 如何在 VIM 中用逗号替换行尾?
- android - 如何在 Gradle 多模块项目中使用 ObjectBox?
- excel - 通过 VBA 打开/关闭工作簿时防止 Workbook_BeforeClose 事件
- c++ - 如何将范围存储为类中的字段?
- java - 在 Android Studio 3.2.1 中禁用代理设置不起作用
- python - 将映射数组应用于numpy数组中的所有元素的快速方法?
- php - 未找到存储映像
- evolutionary-algorithm - 为什么差异进化如此有效?