javascript - 使用不带 e 参数的 e.preventDefault 调用函数
问题描述
我有一个e
以两种方式触发的函数(它有一个参数):
提交表格;
通过在两个元素之间进行更改。
我e.preventDefault()
在函数的末尾有一个,否则,页面将重新加载并且屏幕上的异步事件将被中断。submit
当我使用事件侦听器调用函数时,这不会引发任何错误。但是,当我尝试使用change
事件侦听器时,它显示了一个e
未定义的错误,但仍然有效。当我添加一个时,该函数在使用事件e
调用时拒绝工作。change
显然,我可以不理会它,因为它仍然有效,但我仍然想知道该怎么做。
先感谢您。
编辑代码:
事件监听器
searchForm.addEventListener("submit", getWeather);
// For the temperature preference
tempSelectForm.addEventListener("change", () => {
if (celsius.checked) {
measurement = true;
getWeather();
} else if (fahrenheit.checked) {
measurement = false;
getWeather();
}
});
功能:
function getWeather(e) {
// Data from the search
const text = search.value;
weather
.generateWeather(text, measurement)
.then((data) => {
if (data.cod === "404") {
console.log("No such city found");
} else if (data.cod === "400") {
console.log("No city detected");
} else {
console.log(data);
const placeName = data.name + ", " + data.sys.country;
const currentTemp = Math.floor(data.main.temp);
const weatherType = data.weather[0].main;
const weatherDescription = data.weather[0].description;
const feelsLike = Math.floor(data.main.feels_like);
const humidity = data.main.humidity;
const pressure = data.main.pressure;
const wind = data.wind.speed;
ui.showWeather(
measurement,
placeName,
currentTemp,
weatherType,
weatherDescription,
feelsLike,
humidity,
pressure,
wind
);
}
})
.catch((err) => console.error(err));
e.preventDefault();
}
解决方案
You need to pass the event
parameter from the event listener to getWeather
tempSelectForm.addEventListener("change", (e) => {
if (celsius.checked) {
measurement = true;
getWeather(e);
} else if (fahrenheit.checked) {
measurement = false;
getWeather(e);
}
});
推荐阅读
- github - Bitbucket 是否有与 Github cli 等效的 cli?
- python - 从 pandas 数据框对象中查找最匹配的字符串
- django - 我如何比较模板中的模型
- python - 你如何从 bot.wait_for('reaction_add') 获得 2 个用户?
- math - 根据合作伙伴偏好找到最佳学习组的算法
- spring - Spring Boot MongoDB 数据迁移
- reactjs - 如果它们被激活和停用,如何编辑反应谷歌图表的图例切换的颜色
- python - ParserError:错误标记数据。C 错误:大型 csv 内存不足
- r - R闪亮的反应表输出
- python - 使用 python 和 pytmx 渲染和刷新 tmx 文件映射