Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么addEventListener作为非函数返回_Javascript - Fatal编程技术网

Javascript 为什么addEventListener作为非函数返回

Javascript 为什么addEventListener作为非函数返回,javascript,Javascript,我有一个简单的脚本,试图注册一个按钮点击。但是,我不断得到错误*元素*。addEventListener不是一个函数 谁能解释我做错了什么 HTML <div id="game"> <canvas id="gameScreen" width="550" height="500"></canvas> <div id="output"><p></p></div> <div id="con

我有一个简单的脚本,试图注册一个按钮点击。但是,我不断得到错误
*元素*。addEventListener
不是一个函数

谁能解释我做错了什么

HTML

<div id="game">
    <canvas id="gameScreen" width="550" height="500"></canvas>
    <div id="output"><p></p></div>
    <div id="controls">
        <button id="north">North</button>
        <button id="east">East</button>
        <button id="west">West</button>
        <button id="south">South</button>
    </div>
</div>
错误

TypeError:directionButtons.addEventListener不是函数


变量
directionButtons
是多个元素的数组。您需要在这里使用loop来添加侦听器

window.addEventListener(“加载”,函数(){
var canvas=document.getElementById(“游戏屏幕”);
var ctx=canvas.getContext(“2d”);
var output=document.getElementById(“输出”);
var outputText=output.querySelector(“p”);
var controls=document.getElementById(“控件”);
var directionButtons=controls.getElementsByTagName(“按钮”);
对于(i=0;i

北 东边 西部 南方
方法将返回一个节点列表,您应该在其中循环并将侦听器连接到每个节点:

function my_click(){
   alert(this.id);
}

var directionButtons = controls.getElementsByTagName("button");

for(i=0; i<directionButtons.length; i++) {
    directionButtons[i].addEventListener("click", my_click, false);
}
功能我的鼠标点击(){
警报(this.id);
}
var directionButtons=controls.getElementsByTagName(“按钮”);

对于(i=0;i)来说,由于您必须迭代添加单击事件-
方向按钮
是一个数组,我今天显然无法思考。谢谢,我今天显然无法思考。
function my_click(){
   alert(this.id);
}

var directionButtons = controls.getElementsByTagName("button");

for(i=0; i<directionButtons.length; i++) {
    directionButtons[i].addEventListener("click", my_click, false);
}