使用API​​请求时不会触发事件

时间:2019-08-04 05:48:29

标签: javascript dom-events

我正在尝试使用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));

1 个答案:

答案 0 :(得分:0)

最后!我发现了错误。我正在用api数据替换body的innerhtml。同样,我在体内添加了事件侦听器的输入被替换为API数据。 no element === no event这样。但是奇怪的是我发现如果在成功的Api请求之后我要替换我体内的全部内部html,那么为什么输入字段仍然可见?该错误使我花费了数小时来弄清楚为什么我会遇到此问题。很高兴我修复了它!