我一直在尝试用JavaScript制作《战舰》游戏来进行学校作业,但我一直努力尝试创建对手AI。我在单击网格中的单元格时创建了一个事件:
function addListener(evt) {
evt.addEventListener('click', function(){
//bunch of code
});
}
现在,每次在嵌套的for循环中的网格中创建新单元格时,我就运行此函数
addListener
:yourCell.setAttribute('id', evt + String(a) + String(b));
addListener(yourCell);
我现在想要的是让对手在转弯时运行此click事件,因此我编写此代码只是为了测试
fireEvent
函数:function enemyTurn() {
document.getElementById('yourGrid00').fireEvent('onclick');
}
根据第二个代码示例,我将单元格的ID设置为
'yourGrid00'
,这是通过在运行JavaScript代码后检查html代码来确认的,并且enemyTurn()
函数将永远不会在创建和分配每个单元格之前运行一个ID。我不明白的是,我在
fireEvent
行上收到以下错误:有人知道我在做什么错吗?
最佳答案
fireEvent
是一种非常老的方法,仅在Internet Explorer 8及更低版本中受支持。如果要处理最新的浏览器,则应改用 dispatchEvent
。
不过,您必须手动创建Event
-您不能只调用dispatchEvent('onclick')
。我已经从this answer提取了以下代码的第一部分。
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window, 1, 0, 0, 0, 0,
false, false, false, false, 0, null);
function enemyTurn() {
document.getElementById('yourGrid00').dispatchEvent(evt);
}
JSFiddle demo。