- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
仍在寻求更多帮助
好吧,我已经完成了使用 java 脚本构建的扫雷程序,所以现在要做的最后一件事就是在炸弹方 block 上放置旗帜。通过使用右键单击功能,我收到以下错误:
错误:“document.getElementById(...)”为 null 或不是对象
这是获取它的代码部分。现在我的图像位于一个文件夹中,标志图像名为 sqt01。因此,我多次更改了 document.getElementbyId 部分,将其指向不同的图像,但只是收到该错误。
//Global
//store the value of each square
var gaValue = new Array(8);
for (i = 0; i <= 8; i++) {
gaValue[i] = new Array(8);
}
for (i = 0; i <= 8; i++) {
//loop through each item in those row
for (j = 0; j <= 8; j++) {
gaValue[i][j] = 0;
}
}
//Store the status of each square
var gaSquare = new Array(8);
for (j = 0; j <= 8; j++) {
gaSquare[j] = new Array(8);
}
for (j = 0; j <= 8; j++) {
//loop through each item in those row
for (i = 0; i <= 8; i++) {
gaSquare[i][j] = 'c';
}
}
//Track of whether the game is over or not (starts this with false)
var gbGameOver = false;
function vInit()
{
var strHTML;
var i;
var j;
strHTML = "<table style='margin-left:auto;margin-right:auto'>";
strHTML += "<tr><td colspan='8' style='text-align:center'>MineSweeper</td></tr>";
strHTML += "<tr><td colspan='8' style='text-align:center'><input type='button' id='btnNew' value='New Game' onclick='vNewGame()'></td></tr>";
//Loop through the rows to build the table of tiles
for (i = 0; i < 8; i++)
{
strHTML += "<tr>";
for (j = 0; j < 8; j++)
strHTML += '<td><img src="images/sqt0.png" id="square' + i + ', ' + j + '" onclick="vClick(' + i + ', ' + j + ')" onmousedown="vRightClick(' + i + ', ' + j + ')"/></td>';
strHTML += "<tr>";
}
strHTML += '<tr><td colspan="8" style="text-align:center"><textarea id="taOut" cols="18" rows="10"></textarea></td></tr>';
strHTML += "</table>";
frmGrid.innerHTML = strHTML;
//Place bombs
var iBomb = 0;
var iRow = Math.floor(Math.random() * 8);
var iCol = Math.floor(Math.random() * 8);
while (iBomb < 8)
{
while (gaValue[iRow][iCol] == 9)
{
iRow = Math.floor(Math.random() * 8);
iCol = Math.floor(Math.random() * 8);
}
gaValue[iRow][iCol] = 9;
iBomb++;
}
//Calculate clue values around mines
var iMine = 0;
for (i = 0; i < 8; i++)
{
for (j = 0; j < 8; j++)
{
for (k = (i - 1) ; k <= (i + 1) ; k++)
for (m = (j - 1) ; m <= (j + 1) ; m++)
if (k >= 0 && k <= 7 && j >= 0 && j <= 7)
if (gaValue[k][m] == 9)
iMine++;
if (gaValue[i][j] != 9)
gaValue[i][j] = iMine;
iMine = 0;
}
}
}
//Get the ID of the image I need to change
function vClick(iRow, iCol)
{
var strID = "square" + iRow + ", " + iCol;
var strOut = "Gameover";
if (gbGameOver == false)
{
gaSquare[iRow][iCol] = 'o';
document.getElementById(strID).src = "images/" + gaValue[iRow][iCol] + ".png";
if (gaValue[iRow][iCol] == 9)
{
document.getElementById('taOut').value = strOut;
vOver();
}
if (gaValue[iRow][iCol] == 0)
{
vZero2(iRow, iCol);
}
}
}
//GameOver
function vOver()
{
var i;
var j;
var strID;
for (i = 0; i < 8; i++)
for (j = 0; j < 8; j++)
{
strID = "square" + i + ", " + j;
document.getElementById(strID).src = "images/" + gaValue[i][j] + ".png";
}
}
//Clearing area
function vZero2(iRow, iCol)
{
var i;
var j;
for (i = iRow - 1; i <= (iRow + 1) ; i++)
{
for (j = iCol - 1; j <= iCol + 1; j++)
{
if (i >= 0 && i < 8 && j >= 0 && j < 8)
if (gaSquare[i][j] != 'o')
vClick(i, j);
}
}
}
//Start new game
function vNewGame()
{
for (i = 0; i < 8; i++)
for (j = 0; j < 8; j++)
{
gaValue[i][j] = 0;
gaSquare[i][j] = 'c';
document.getElementById('square' + i + ', ' + j).src = 'images/sqt0.png';
}
gbGameOver = false;
vInit();
}
//no menu on right click
function bIsRightButtonClicked(e) {
var rightclick = false;
e = e || window.event;
if (e.which) {
rightclick = (e.which == 3);
} else if (e.button) {
rightclick = (e.button == 2);
}
return rightclick;
}
//Getting Flag when you right click
function vRightClick(iRow, iCol, e)
{
if (bIsRightButtonClicked(e))
{
gaSquare[iRow][iCol] = 'c';
gaSquare[iRow][iCol] = 'f';
document.getElementById('square' + i + ', ' + j).src = 'images/sqt1.png'; // Error: 'document.getElementById(...)' is null or not an object
vOver();
}
}
//Getting Flag when you right click
function vRightClick(iRow, iCol, e)
{
if (bIsRightButtonClicked(e))
{
gaSquare[iRow][iCol] = 'c';
gaSquare[iRow][iCol] = 'f';
document.getElementById('square' + i + ', ' + j).src = 'images/sqt1.png'; // Error: 'document.getElementById(...)' is null or not an object
vOver();
}
}
最佳答案
dom 元素 ID 属性中不能有空格或逗号(请参阅 this post for more details and references )。它必须以以下内容开头:
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".")
这样,我会将您 ID 中的“,”替换为“_”
您的代码需要更改为的一些示例:
...
strHTML += '<td><img src="images/sqt0.png" id="square' + i + '_' + j +
'" onclick="vClick(' + i + ', ' + j +
')" onmousedown="vRightClick(' + i + ', ' + j + ')"/></td>';
...
document.getElementById('square' + i + '_' + j)
...
var strID = "square" + iRow + "_" + iCol;
...
请注意,onclick
和 onmousedown
处理程序/代码生成保持不变
关于javascript - 使用扫雷游戏的右键功能放置旗帜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27307915/
我在网上搜索但没有找到任何合适的文章解释如何使用 javascript 使用 WCF 服务,尤其是 WebScriptEndpoint。 任何人都可以对此给出任何指导吗? 谢谢 最佳答案 这是一篇关于
我正在编写一个将运行 Linux 命令的 C 程序,例如: cat/etc/passwd | grep 列表 |剪切-c 1-5 我没有任何结果 *这里 parent 等待第一个 child (chi
所以我正在尝试处理文件上传,然后将该文件作为二进制文件存储到数据库中。在我存储它之后,我尝试在给定的 URL 上提供文件。我似乎找不到适合这里的方法。我需要使用数据库,因为我使用 Google 应用引
我正在尝试制作一个宏,将下面的公式添加到单元格中,然后将其拖到整个列中并在 H 列中复制相同的公式 我想在 F 和 H 列中输入公式的数据 Range("F1").formula = "=IF(ISE
问题类似于this one ,但我想使用 OperatorPrecedenceParser 解析带有函数应用程序的表达式在 FParsec . 这是我的 AST: type Expression =
我想通过使用 sequelize 和 node.js 将这个查询更改为代码取决于在哪里 select COUNT(gender) as genderCount from customers where
我正在使用GNU bash,版本5.0.3(1)-发行版(x86_64-pc-linux-gnu),我想知道为什么简单的赋值语句会出现语法错误: #/bin/bash var1=/tmp
这里,为什么我的代码在 IE 中不起作用。我的代码适用于所有浏览器。没有问题。但是当我在 IE 上运行我的项目时,它发现错误。 而且我的 jquery 类和 insertadjacentHTMl 也不
我正在尝试更改标签的innerHTML。我无权访问该表单,因此无法编辑 HTML。标签具有的唯一标识符是“for”属性。 这是输入和标签的结构:
我有一个页面,我可以在其中返回用户帖子,可以使用一些 jquery 代码对这些帖子进行即时评论,在发布新评论后,我在帖子下插入新评论以及删除 按钮。问题是 Delete 按钮在新插入的元素上不起作用,
我有一个大约有 20 列的“管道分隔”文件。我只想使用 sha1sum 散列第一列,它是一个数字,如帐号,并按原样返回其余列。 使用 awk 或 sed 执行此操作的最佳方法是什么? Accounti
我需要将以下内容插入到我的表中...我的用户表有五列 id、用户名、密码、名称、条目。 (我还没有提交任何东西到条目中,我稍后会使用 php 来做)但由于某种原因我不断收到这个错误:#1054 - U
所以我试图有一个输入字段,我可以在其中输入任何字符,但然后将输入的值小写,删除任何非字母数字字符,留下“。”而不是空格。 例如,如果我输入: 地球的 70% 是水,-!*#$^^ & 30% 土地 输
我正在尝试做一些我认为非常简单的事情,但出于某种原因我没有得到想要的结果?我是 javascript 的新手,但对 java 有经验,所以我相信我没有使用某种正确的规则。 这是一个获取输入值、检查选择
我想使用 angularjs 从 mysql 数据库加载数据。 这就是应用程序的工作原理;用户登录,他们的用户名存储在 cookie 中。该用户名显示在主页上 我想获取这个值并通过 angularjs
我正在使用 autoLayout,我想在 UITableViewCell 上放置一个 UIlabel,它应该始终位于单元格的右侧和右侧的中心。 这就是我想要实现的目标 所以在这里你可以看到我正在谈论的
我需要与 MySql 等效的 elasticsearch 查询。我的 sql 查询: SELECT DISTINCT t.product_id AS id FROM tbl_sup_price t
我正在实现代码以使用 JSON。 func setup() { if let flickrURL = NSURL(string: "https://api.flickr.com/
我尝试使用for循环声明变量,然后测试cols和rols是否相同。如果是,它将运行递归函数。但是,我在 javascript 中执行 do 时遇到问题。有人可以帮忙吗? 现在,在比较 col.1 和
我举了一个我正在处理的问题的简短示例。 HTML代码: 1 2 3 CSS 代码: .BB a:hover{ color: #000; } .BB > li:after {
我是一名优秀的程序员,十分优秀!