作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 javascript 创建一个雷区游戏。
当我点击clear ro**w 时,它会给出“passed”,但有时也会“died”,或者点击 **mined row 有时会给出“passed”。它应该只给出清除行的“通过”和开采行的“死亡”。
我想不通原因..
你能看到吗?
到目前为止,这是我的代码:
var level = 9;
// create the table
var body = document.getElementsByTagName("body")[0];
var tbl = document.createElement("table");
tbl.setAttribute('id', 'myTable');
var tblBody = document.createElement("tbody");
//Create 2d table with mined/clear
for (var i = 1; i <= 10; i++) {
var row = document.createElement("tr");
document.write("<br/>");
for (var x = 1; x <= 10; x++) {
var j = Math.floor(Math.random() * 50);
if (j <= 15) {
j = "mined";
} else {
j = "clear";
}
var cell = document.createElement("td");
var cellText = document.createTextNode(j + "");
cell.appendChild(cellText);
row.appendChild(cell);
}
tblBody.appendChild(row);
}
tbl.appendChild(tblBody);
body.appendChild(tbl);
tbl.setAttribute("border", "1");
//Check which row is clicked
window.onload = addRowHandlers;
function addRowHandlers() {
var table = document.getElementById("myTable");
var rows = table.getElementsByTagName("td");
for (p = 0; p < rows.length; p++) {
var currentRow = table.rows[p];
var createClickHandler = function (row) {
return function () {
var cell = row.getElementsByTagName("td")[1];
var id = cell.innerHTML;
if (id == "mined") {
alert("Died");
} else {
alert("Passed!");
}
};
}
currentRow.onclick = createClickHandler(currentRow);
}
}
JSFiddle 在这里: http://jsfiddle.net/blowsie/ykuyE/
提前致谢!
最佳答案
这是导致错误行为的这一行:var cell = row.getElementsByTagName("td")[1];
每次点击时,[1]
选择列的第二个单元格,无论实际单击的是哪个单元格。
我修改了你的 fiddle :http://jsfiddle.net/ykuyE/1onclick 处理程序现在直接应用于单个单元格,当创建表时。
cell.onclick = function() {
if (this.innerHTML == "mined") {
alert("Died");
} else {
alert("Passed!");
}
}
关于javascript - Js 的雷区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16785710/
在考虑类初始化时,我们都知道进行子类初始化时,如果父类没有初始化要先初始化子类。然而事情并没有一句话这么简单。 首先看看Java中初始化触发的条件: (1)在使用new实例化对象,访问静态数据和方
我目前正在使用 Google O3D WebGL 框架开发应用程序,这是我第一次如此密集地使用 JavaScript。这些功能只完成了大约 20%,但应用程序本身已经开始占用大约 160 兆内存,而让
我是一名优秀的程序员,十分优秀!