我正在制作一个ascii游戏。
$("#GameContainer").eq(i).contents().html(map[i]);
这行代码。我不知道为什么,但它不起作用。过去几个小时我一直想弄清楚,但不是。
function startGame() {
map = map_Default.slice();
for (var i = 0; i < map.length; i++) {
$("#GameContainer").eq(i).contents().html(map[i]);
}
}
所以在for
循环中,当在eg()
函数中调用时,它的行为应该是0,1,2,3,4,5等等。在html()
函数中调用时,它似乎保持为0,因此不像正常那样渲染地图,而是重复第一行图块。另外,我非常确定我不应该使用contents()
函数,但是当我不使用时,html()
函数只会将#GameContainer
的每个孩子替换为map[i]
}。
以下是更多信息:
$(document).ready(function () {
var mapl_Half = Math.floor(map.length / 2);
var trl_Half = Math.floor(map[mapl_Half].length / 2);
var whitespace = Math.floor(trl_Half - (startmessage.length / 2));
map[mapl_Half] = map[mapl_Half].substring(0, whitespace) + startmessage + map[mapl_Half].substring(whitespace + startmessage.length);
for (var i = 0; i < map.length; i++) {
$("#GameContainer").append("<p class=\"tilerow\">" + map[i] + "</p>");
}
$(document).keydown(function (key) {
switch (key.keyCode) {
case 13:
startGame();
break;
}
});
});
唯一遗漏的是两个变量map
和map_Default
,它们是字符串数组。
答案 0 :(得分:2)
您只能拥有一个具有给定ID的元素。
所以
$("#GameContainer")
只包含一个元素,因此
$("#GameContainer").eq(i)
毫无意义。
但似乎你想要的是 i
中索引#GameContainer
的孩子。你可以用
$("#GameContainer .tilerow").eq(i)