无法将EventListener添加到javascript中的对象

无法将EventListener添加到javascript中的对象,javascript,html,css,web,Javascript,Html,Css,Web,下面的代码应该为表中的每个单元格添加click的EventListener,但是如果我将函数名与参数一起放置,则函数似乎会在解释器遇到添加EventListener的提示时启动。我怎样才能解决这个问题 function startGame() { for(var i = 1; i <= 16; i++) { var cellValue = Math.floor(Math.random() * 16);

下面的代码应该为表中的每个单元格添加click的EventListener,但是如果我将函数名与参数一起放置,则函数似乎会在解释器遇到添加EventListener的提示时启动。我怎样才能解决这个问题

    function startGame() {
            for(var i = 1; i <= 16; i++) {
                var cellValue = Math.floor(Math.random() * 16);
                while(isPresent(cellValue)) {
                    cellValue = Math.floor(Math.random() * 16);
                }
                numbers[cellValue] = true;
                var cell = document.getElementById("cell" + i);
                cell.addEventListener("click", selectCell(cell), false);
                if(cellValue == 0) {
                    cell.innerHTML = "";
                    cell.setAttribute("class", "emptyCell");
                } else {
                    cell.removeAttribute("class");
                    cell.innerHTML = cellValue;
                }   
            }
        }

    function selectCell(cell) {
            if(!isCellSelected) {
                cellSelected = cell;
                isCellSelected = true;
            } else if(cell == cellSelected) {
                cellSelected = null;
                isCellSelected = false;
            } else {
                var cellID = cell.id;
                var effectiveID = parseInt(cellID.substring(4, 6));
                if(isGranted(effectiveID)) {
                    //COMPLETARE METODO                     
                } else {
                    window.alert("Selezionare solo una cella adiacenta alla cella già selezionata.");
                }
            }
        }

        function isGranted(id) {
            var result;
            var existentEffectiveID = parseInt(cellSelected.id.substring(4, 6));
            //Se la cella selezionata è la successiva o precedente in termini orizzontali o verticali allora si puo' selezionare
            if(id == existentEffectiveID - 4 || id == existentEffectiveID + 4 || id == existentEffectiveID + 1 || id == existentEffectiveID - 1) {
                result = true;
            } else {
                result = false;
            }
            return result;
        }

删除cell.AddEventListener上的参数单击,选择CellCell,false;并使用cell.addEventListener单击,选择cell,false;相反您可以在函数中使用此选项引用正在单击的元素单元格。

删除单元格上的参数。addEventListenerclick,selectCellcell,false;并使用cell.addEventListener单击,选择cell,false;相反您可以在函数中使用它来引用被单击的元素单元格。

事件侦听器需要回调

cell.addEventListener("click", selectCell(cell), false);
给它selectCellcell实际上就是说,调用selectCell返回的任何未定义的内容。另一个问题是,在附加侦听器时将调用selectCell

考虑以下差异:

var b1=document.getElementByIdb1; var b2=document.getElementByIdb2; var myVar=hello; 函数readVar{ console.logmyVar; } //现在调用readVar将打印hello b1.addEventListenerclick、readVar、false; //您希望等待事件实际发生 b2.addEventListenerclick、readVar、false; //现在myVar是world,只要单击b2就会打印出来 myVar=世界; 按钮1
按钮2事件侦听器需要回调

cell.addEventListener("click", selectCell(cell), false);
给它selectCellcell实际上就是说,调用selectCell返回的任何未定义的内容。另一个问题是,在附加侦听器时将调用selectCell

考虑以下差异:

var b1=document.getElementByIdb1; var b2=document.getElementByIdb2; var myVar=hello; 函数readVar{ console.logmyVar; } //现在调用readVar将打印hello b1.addEventListenerclick、readVar、false; //您希望等待事件实际发生 b2.addEventListenerclick、readVar、false; //现在myVar是world,只要单击b2就会打印出来 myVar=世界; 按钮1
按钮2你什么时候给StartName打电话?您确定它是在页面加载后调用的吗?是的,它是在窗口对象的事件加载后调用的…这种情况可能是一个很好的选择。现在对你来说可能太高级了,但要为将来考虑一些事情。是的,活动代表团总是最好的。你什么时候给StartGrame打电话?您确定它是在页面加载后调用的吗?是的,它是在窗口对象的事件加载后调用的…这种情况可能是一个很好的选择。现在对你来说可能太超前了,但要为未来考虑一些事情。是的,活动代表团总是最好的哦,非常感谢!我一直无法找到如何引用函数调用的发送方,现在它可以工作了。再次感谢!哦,非常感谢你!我一直无法找到如何引用函数调用的发送方,现在它可以工作了。再次感谢!