变量“i”行为奇怪,jQuery函数没有做我想要的

时间:2014-05-24 05:42:21

标签: javascript jquery

我正在制作一个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;
        }
    });
});

唯一遗漏的是两个变量mapmap_Default,它们是字符串数组。

此处发布:http://camron.onyxtek.com/Main/AsciiGame/

1 个答案:

答案 0 :(得分:2)

您只能拥有一个具有给定ID的元素。

所以

$("#GameContainer")

只包含一个元素,因此

$("#GameContainer").eq(i)

毫无意义。

但似乎你想要的是 i中索引#GameContainer 的孩子。你可以用

来搞定
$("#GameContainer .tilerow").eq(i)