【发布时间】:2014-07-09 00:21:00
【问题描述】:
期望的结果:
我想通过打印 400 张代表图块的图像来创建 20x20 的地图。然后,我希望能够单击这些图像并收到一条警报,告诉我该图块的相应坐标。
问题/错误:
无论我单击哪个磁贴,警报消息总是显示 x:19,y19,我假设这是仅生成的最后一个磁贴。我猜在分配值时我做错了。
我是如何尝试的:
我正在使用两个 for 循环将 20 x 20 元素的网格创建为二维数组。我使用此代码使其所有元素都等于 0。
for (j = 0; j < 20; j++)
{
for (i = 0; i < 20; i++)
{
mapxy[j][i] = 0;
}
}
之后,我创建另外两个 for 循环来遍历所有这些元素并相应地打印它们的值,一个接一个(我在前两个 fors 保持模块化方法):
for (m = 0; m < 20; m++)
{
for(k = 0; k < 20; k++)
{
document.getElementById("map").innerHTML += "<img onclick=\"tileclick(k,m)\" src=\"" + tiletype[mapxy[k][m]] + "\"/>";
}
document.getElementById("map").innerHTML += "</br>";
}
请注意 onclick="tileclick(k,m)" 完成这一切之后,我定义了这个函数的实际作用(显示坐标):
function tileclick(k,m)
{
alert('x: ' + k + ' y: ' + m);
}
任何帮助将不胜感激。感谢您的宝贵时间。
【问题讨论】:
-
为每个图像提供自定义属性可能更容易,例如 然后在点击时检索这些值。甚至,在您的代码中
标签: javascript html arrays for-loop