窗口单击事件Javascript在第一次单击时不起作用

窗口单击事件Javascript在第一次单击时不起作用,javascript,dom-events,Javascript,Dom Events,我有一个问题,这个代码可以工作,但是第一次点击不起作用, 当我第一次单击窗口时。打开不起作用,只有在第二次单击后才起作用 let t = setInterval(function(){ let x = document.createElement('p'); x.className = 'text-style'; x.innerHTML = games[cont]; box.appendChild(x); if(co

我有一个问题,这个代码可以工作,但是第一次点击不起作用, 当我第一次单击
窗口时。打开
不起作用,只有在第二次单击后才起作用

let t = setInterval(function(){
        let x = document.createElement('p');
        x.className = 'text-style';
        x.innerHTML = games[cont];
        box.appendChild(x);
        if(cont >= games.length - 1){
            clearInterval(t);
        }
        cont++;
    },50);
    let gamesT = document.getElementsByClassName('text-style');
    window.addEventListener('click', function(){
        for(let i = 0; i < gamesT.length; i++){
            gamesT[i].addEventListener('click', function(){
                window.open('https://www.google.com/search?q=' + gamesT[i].innerHTML, '_blank');
                });
        }
    });
let t=setInterval(函数(){
设x=document.createElement('p');
x、 className='文本样式';
x、 innerHTML=游戏[cont];
框。追加子项(x);
如果(续>=games.length-1){
净间隔(t);
}
cont++;
},50);
让gamesT=document.getElementsByClassName('text-style');
window.addEventListener('click',function(){
for(设i=0;i
这是因为在创建元素时,它没有附加事件侦听器。您可以通过创建函数并传递该单击来修复此问题。并在每个间隔中调用它

let gamesT = document.getElementsByClassName('text-style');
let t = setInterval(function(){
        let x = document.createElement('p');
        x.className = 'text-style';
        x.innerHTML = games[cont];
        box.appendChild(x);
        if(cont >= games.length - 1){
            clearInterval(t);
        }
        cont++;
        addListeners();
    },50);

function addListeners(){
    for(let i = 0; i < gamesT.length; i++){
        gamesT[i].onclick = function(){
              window.open('https://www.google.com/search?q=' + gamesT[i].innerHTML, '_blank');
         }
     }
}
window.addEventListener('click', addListeners);
let gamesT=document.getElementsByClassName('text-style');
设t=setInterval(函数(){
设x=document.createElement('p');
x、 className='文本样式';
x、 innerHTML=游戏[cont];
框。追加子项(x);
如果(续>=games.length-1){
净间隔(t);
}
cont++;
addListeners();
},50);
函数addListeners(){
for(设i=0;i
这是因为在创建元素时,它没有附加事件侦听器。您可以通过创建函数并传递该单击来修复此问题。并在每个间隔中调用它

let gamesT = document.getElementsByClassName('text-style');
let t = setInterval(function(){
        let x = document.createElement('p');
        x.className = 'text-style';
        x.innerHTML = games[cont];
        box.appendChild(x);
        if(cont >= games.length - 1){
            clearInterval(t);
        }
        cont++;
        addListeners();
    },50);

function addListeners(){
    for(let i = 0; i < gamesT.length; i++){
        gamesT[i].onclick = function(){
              window.open('https://www.google.com/search?q=' + gamesT[i].innerHTML, '_blank');
         }
     }
}
window.addEventListener('click', addListeners);
let gamesT=document.getElementsByClassName('text-style');
设t=setInterval(函数(){
设x=document.createElement('p');
x、 className='文本样式';
x、 innerHTML=游戏[cont];
框。追加子项(x);
如果(续>=games.length-1){
净间隔(t);
}
cont++;
addListeners();
},50);
函数addListeners(){
for(设i=0;i
什么是
游戏
?第一次单击是否只会将事件侦听器添加到gamesT?这是因为您必须单击窗口才能附加其他元素事件。只需删除window.addEventListener的行,并立即将事件附加到gamesT元素数组。games是一个数组,它是
games
?第一次单击不只是将事件侦听器添加到gamesT吗?这是因为您必须单击该窗口才能附加其他元素事件。只需删除window.addEventListener的行,并立即将事件附加到gamesT元素数组。games是一个ArrayID现在无法正常工作第一次单击可以工作,但当单击尝试打开很多窗口时,我修复了在if in setInterval中调用函数addListeners的问题,感谢您的回答,现在works@brunokoji编辑了代码,请再次检查。我直接使用了
onclick
而不是
addEventListener
I修复了在setInterval中的“if”中调用函数addListeners的问题,谢谢你的回答,现在工作他们为什么gamesT中的addEventListener打开多个窗口,如您所说的onclick事件已修复,但为什么?第一次单击无法正常工作,但当单击尝试打开多个窗口时,我修复了在if in setInterval中调用函数addListeners的问题,感谢您的回答,现在works@brunokoji编辑了代码,请再次检查。我直接使用了
onclick
而不是
addEventListener
我修复了在setInterval中的“if”中调用函数addListeners的问题,谢谢你的回答,现在可以工作了为什么addEventListener在gamesT中打开多个窗口,像你说的那样对onclick事件高呼已修复,但为什么?