gpt4 book ai didi

javascript - 为什么我无法向 div 添加事件监听器?

转载 作者:行者123 更新时间:2023-12-03 00:13:32 24 4
gpt4 key购买 nike

我有一个对象,它有一个创建 div 的方法,然后为它们分配一个单击事件,但我也想为它们分配一个 onkeypress 事件,但它不允许我这样做...

这是创建 div 的方法。效果很好。

populateSquares(){
let relatedTagToPopulation = document.getElementById("questionp");
let whatTextIs = relatedTagToPopulation.textContent;
for (let u=0;u<this.stemQuestions.length;u++){
if (this.stemQuestions[u]==whatTextIs){
var populateSquaresPertinentInt = u;
}
}
for (let i=0;i<this.stemAnswers.length;i++){
if (i==populateSquaresPertinentInt){
let numberOfSquaresToAdd = this.stemAnswers[i].length;
for (let j=0;j<numberOfSquaresToAdd;j++){
let elToAdd = document.createElement("div");
elToAdd.id="ans"+j+"";
elToAdd.className="lans";
elToAdd.onclick= hangmanGame.selectThisSquare;
console.log(elToAdd);
let elToAddInto = document.getElementById("answeri");
elToAddInto.appendChild(elToAdd);
}
}
}
},

这是向 div 添加一些属性以及事件监听器的方法

selectThisSquare(e){
let currentElementId = e.target.id;
document.getElementById(currentElementId).style.cursor = "text";
document.getElementById(currentElementId).style.backgroundColor = "#557a95";
document.getElementById(currentElementId).onkeydown = hangmanGame.textInputHandler;
console.log(e.target.id);
let x = hangmanGame.giveCurrentQuestionAndWord();
let xs = x[1];
hangmanGame.deselectAllOtherSquares(currentElementId,xs);
},

这是应该在按下按键时触发的方法,但没有触发任何内容。

textInputHandler(){
console.log(4);
},

最佳答案

默认情况下,div 不是“可选择的”,因此它不会对任何 keydown 事件使用react。但是,您可以通过将 tabindex="0" 添加到 div 来使其可选择。这样,当您单击它时,它就会变得可聚焦,然后触发 onkeydown 事件。

请参阅下面的工作示例:

const game = {
addKeyDownListener() {
document.getElementById("txt").onkeydown = game.handleTextInput
},
handleTextInput() {
console.log(4);
}
}

game.addKeyDownListener();
#txt {
height: 100px;
width: 100px;
border: 1px solid black;
outline: none; /* add to hide outline */
}
<div type="text" id="txt" tabindex="0"></div>

注意:默认情况下,添加 tabindex 将为您的 div 选择后提供蓝色轮廓。要删除此内容,请添加 css outline: none

关于javascript - 为什么我无法向 div 添加事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54614600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com