窗口单击事件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事件高呼已修复,但为什么?