应插入时未插入动态类

Dynamic class not being inserted when supposed to

本文关键字:插入 动态      更新时间:2023-09-26

基本上,我想在每个列表项中添加一个类,并且每个类都必须特定于一个"房子"。所以,我创建了一个数组来存储所有的房子,看起来一切都很好。问题似乎出现在最后一个for循环中,在该循环中添加了类,并且它们的值是存储在前一个houseColors[]数组中的值:然而,当我在控制台中查看时,类并没有被插入。

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

$('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]);
    }
}

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

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

然而,最好使用.eq方法而不是:eq选择器:

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