我有这个问题。我正在用 Javascript 创建一个类似于雷区的游戏——我决定使用一个类来生成游戏关卡。该类还负责根据创建关卡时定义的关卡大小生成 DOM 代码,包括按钮和布局。
现在我遇到的问题是,当我为每个按钮生成代码时:
box.setAttribute('onclick', this.levelName + '.checkResult(this.id)');
在生成 HTML 中,它似乎是正确的:
<button id="00" class="box" onclick="LevelOne.checkResult(this.id)">test</button>
但是当我按下相对按钮时,我收到了这条消息:
Uncaught ReferenceError: LevelOne is not defined
at HTMLButtonElement.onclick (findTheSpot.html:16)
如果我这样做,直接在第二个参数中插入变量名:
box.setAttribute('onclick', 'levelOne.checkResult(this.id)');
它完美地工作。
我将在下面粘贴整个代码,以帮助您可视化整个流程 - 我对 javascript 完全陌生,我正在尝试尽可能多地学习,我自己创建不同的编码练习,提前为任何人道歉编码恐怖或菜鸟错误:D
/// creating a class to generate an array map of 0s and a single random 1
class Level {
constructor(wL, hL) {
this.widhtLevel = wL;
this.lenghtLevel = hL;
this.levelName;
this.level = [];
}
populateLevel() {
var idNumber = 0;
//Creating the main div container
var div = document.createElement('div');
div.style.width = this.widhtLevel + (this.widhtLevel * 50) + 'px';
div.style.height = this.lenghtLevel + (this.lenghtLevel * 50) + 'px';
div.setAttribute('id', 'mainContainer');
div.setAttribute('class', 'boxContainer');
document.body.appendChild(div);
for(var i = 0; i < this.lenghtLevel; i++) {
var arrayPopulation = []
for(var j = 0; j < this.widhtLevel; j++) {
arrayPopulation.push(0)
//Creating the boxes
var box = document.createElement('button');
box.textContent = "test";
box.setAttribute('id', idNumber + '' + (arrayPopulation.length - 1));
box.setAttribute('class', 'box');
box.setAttribute('onclick', this.levelName + '.checkResult(this.id)');
div.appendChild(box);
}
扬帆大鱼
相关分类