Onclick一直回到原来的价值

use*_*085 6 html javascript

试图在javascript中制作一个扫雷并遇到这个问题......

我创建了一个表,每个td都是一个"盒子",里面有一个矿井或者没有(当前).单击一个框后,javascript应该将onclick从"clicked(this.id)"更改为一个警告"NOPE"(发出警告只是为了测试是否发生了某些事情),但是发生的事情是:

  1. 我点击"方框1",它显示那里有什么(炸弹或什么都没有)
  2. 我再次点击它,这次我收到警报"NOPE" - 这意味着onclick已经改变.好!
  3. 我点击"方框2",它显示那里有什么(炸弹或什么都没有)
  4. 我再次点击它,这次我收到警报"NOPE" - 这意味着这个onclick也发生了变化!
  5. 我再次点击"方框1".点击的(this.id)再次运行.(这是因为我每次运行函数时都添加了一个计数器)

出于某种原因,onclick返回其原始值(单击(this.id))..

我做了一个测试页面,一个2 td的表和同样的想法(点击后更改onclick值)并且它工作..我不知道如何解决这个问题...

有效的test.html:http: //pastebin.com/62ayRJps

网站上的HTML无法正常工作:http: //pastebin.com/SZ6NU8j9

并且网站中的Javascript无法正常工作:http: //pastebin.com/bevJHNLc

Jef*_* To 4

由于以下行,您的点击事件处理程序正在重置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)