javascript - 处理 API 请求时不会触发事件
问题描述
我正在尝试使用 addEvent 侦听器在我的表单输入中获取提交的值,但没有任何事件起作用。事件仅在我评论我的 API 请求代码块时触发。你能帮忙找出这个错误吗?这是我的代码:
import Api from './api';
const apiConfig = require ("../config.json");
// Dom queries
const searchForm = document.getElementById('search');
const submit = document.querySelector('button');
submit.addEventListener('click', e =>{
console.log("hello");
});
searchForm.addEventListener('submit', e => {
e.preventDefault();
console.log("hello");
})
const updateUi = imageUrl => {
let template = `<img src="${imageUrl}">`;
document.body.innerHTML += template;
};
const getTrending = new Api('http://api.giphy.com/v1/gifs/trending', {api_key: apiConfig.apiKey});
const data = getTrending.makeRequest();
data.then( data => {
var responseData = data.data;
responseData.forEach( gifdata => {
const gifUrl = gifdata.images.original.url;
updateUi(gifUrl);
})}
).catch( err => console.log(err));
解决方案
最后!我发现了错误。我正在用 api 数据替换 body 的 innerhtml。此外,我在我体内添加了一个事件侦听器的输入也被 API 数据替换。所以no element === no event
。但是我发现奇怪的是,如果我在成功的 Api 请求后替换了我身体的全部内部 html,那么为什么输入字段仍然可见?这个错误花了我几个小时才弄清楚为什么我会遇到这个问题。很高兴我修好了它!
推荐阅读
- excel - 对应用于列的每个单元格的某些公式的结果求和
- amazon-web-services - 可从经过身份验证的 URL 获得的 AWS 私有 S3 存储桶
- sql - 获取 SQLITE ERROR 不完整的输入错误。怎么了?
- javascript - 在 aws node 10 lambda 中执行子进程后,节点生成子进程不执行命令
- scala - 使用 scala 宏时,为什么编译错误堆栈跟踪看起来如此不连贯?
- c++ - 定义一个 unordered_set 对
- embedded - 简单工作室中用于闪烁 LED 问题的 GPIO 命令
- php - 小部件显示空白页
- java - 创建唯一的随机 ID
- ruby - rspec 测试一个类方法给对象不被监视或存根错误