Javascript 为什么我不能向div添加事件侦听器?

Javascript 为什么我不能向div添加事件侦听器?,javascript,object,Javascript,Object,我有一个对象,它有一个创建div的方法,然后给它们分配一个on-click事件,但我也想给它们分配一个onkeypress事件,但它不允许我这么做 这是创建div的方法。它很好用 populateSquares(){ let relatedTagToPopulation = document.getElementById("questionp"); let whatTextIs = relatedTagToPopulation.textContent; for (let

我有一个对象,它有一个创建div的方法,然后给它们分配一个on-click事件,但我也想给它们分配一个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); 
            }
        }
    }
},
这是按键时应该触发的方法,但不会触发任何内容

textInputHandler(){
    console.log(4);
},
默认情况下,div是不可选择的,因此它不会对任何按键事件做出反应。但是,您可以通过将tabindex=0添加到div来选择它。这样,当您单击它时,它将成为可聚焦的,然后允许触发onkeydown事件

请参见下面的工作示例:

康斯特博弈={ addKeyDownListener{ document.getElementByIdtxt.onkeydown=game.handleTextInput }, handleTextInput{ 1.log4; } } game.addKeyDownListener; 文本{ 高度:100px; 宽度:100px; 边框:1px纯黑; 大纲:无;/*添加以隐藏大纲*/ }
我试过按键盘和按键盘,但都不起作用。我试图通过添加此函数来调用该函数。它无论如何都不起作用。请将您的代码编辑为一个可能的副本!我认为您添加onkeydown事件的元素是某种类型的输入元素,对吗?不,它只是一个div。这是正确的,但我要注意,对于可访问性,OP应该使用a来处理用户的输入,即使被CSS隐藏。很多设备的键盘并不总是可访问的,而将焦点设置在div上则不允许这些设备切换虚拟键盘。
textInputHandler(){
    console.log(4);
},