试图在javascript中制作一个扫雷并遇到这个问题......
我创建了一个表,每个td都是一个"盒子",里面有一个矿井或者没有(当前).单击一个框后,javascript应该将onclick从"clicked(this.id)"更改为一个警告"NOPE"(发出警告只是为了测试是否发生了某些事情),但是发生的事情是:
出于某种原因,onclick返回其原始值(单击(this.id))..
我做了一个测试页面,一个2 td的表和同样的想法(点击后更改onclick值)并且它工作..我不知道如何解决这个问题...
有效的test.html:http: //pastebin.com/62ayRJps
网站上的HTML无法正常工作:http: //pastebin.com/SZ6NU8j9
并且网站中的Javascript无法正常工作:http: //pastebin.com/bevJHNLc
由于以下行,您的点击事件处理程序正在重置clicked(id):
document.getElementById("minesweeper").innerHTML += ammountClicked+" - "
Run Code Online (Sandbox Code Playgroud)
每个表格单元格onclick='clicked(this.id);'在其 HTML 中都有一个属性。当您将测试函数分配tst给表格单元格 DOM 对象时,您正在设置onclickDOM 对象的属性,但这不会更改onclickHTML 的属性。(是的,这很令人困惑。)
在上面的代码行中,浏览器innerHTML从minesweeper div(具有原始onclick属性)读取 ,将其与另一个字符串连接,然后将结果重新分配回minesweeper div。这会清除 的原始内容div并将其替换为新的 HTML(每个单元格都具有原始onclick属性的表格)。
如果你想要一个消息区域,我建议设置innerHTML另一个元素:Demo
在演示中,我更改了第 49 行(添加了span):
print += "</table><span id='message'></span>";
Run Code Online (Sandbox Code Playgroud)
和第 107 行(将文本分配给span):
document.getElementById("message").innerHTML += ammountClicked+" - ";
Run Code Online (Sandbox Code Playgroud)