应该在没有插入动态类时

时间:2014-08-28 06:40:57

标签: javascript jquery html css

基本上,我想为每个列表项添加一个类,每个类必须特定于“house”。所以,我创建了一个存储所有房屋的阵列,一切似乎都很好。问题似乎是在最后一个for循环中,其中添加了类,它们的值是存储在前一个houseColours []数组中的值:但是,当我查看控制台时,没有插入类。

更奇怪的是,如果我通过这样的方式在控制台中手动插入一个类:

$('li:eq(0)').addClass(houseColours[0]);

......它运作得很好。可能是什么问题呢?感谢。

function chart()
    {
        houseColours = [];
        var html = "<ol start='0'>";
        for (var i = 0; i < shuttle.seats.length; i++)
        {
            if (shuttle.seats[i] == null)
            {
                html += "<li>Empty Seat</li>";
            }
            else
            {
                for (var j = 0, n = PASSENGERS.length; j < n; j++)
                {
                    if (shuttle.seats[i] == PASSENGERS[j].name)
                    {
                        var house = PASSENGERS[j].house;
                        break;
                    }
                }
                houseColours.push(house);

            html += "<li>" + shuttle.seats[i] + ' at ' + house + "</li>";
        }
    }
    html += "</ol>";

    $("#chart").html(html);

    for (var k = 0, banners = houseColours.length; k < banners; k++)
    {
        $('li:eq(k)').addClass(houseColours[k]);
    }
}

1 个答案:

答案 0 :(得分:1)

在你的选择器中,$('li:eq(k)') k是选择器字符串的一部分,你应该将它用作变量(在字符串之外),如下所示:

$('li:eq(' + k + ')').addClass(houseColours[k]);

最好使用.eq方法代替:eq选择器,但是:

$('li').eq(k).addClass(houseColours[k]);