代码之家  ›  专栏  ›  技术社区  ›  codeEnthusiast

阻止数组筛选器匹配与所需元素索引不同的元素

  •  0
  • codeEnthusiast  · 技术社区  · 7 年前

    我已经创建了一个计分器,通过添加一个类来突出每场比赛的胜利者。winner通过下面的javascript:

    //从每场比赛中获得最大分数,并推入g1winner和g2winner数组-
    g1winner.push(math.max(parseint(scoreboxarr[i].split(';')[2]),parseint(scoreboxarr[i].split(';')[5]));
    g2winner.push(math.max(parseint(scoreboxarr[i].split(';')[11]),parseint(scoreboxarr[i].split(';')[14]));
    
    //筛选每个日期的scorebox元素以查找max score和addclass'.winner'
    $('g1t1_score.scorebox-elem,g1t2_score.scorebox elem').filter(函数()。{
    return$(this).is(':contains('+g1winner[i]+')');
    }).addclass('winner').preval().eq(2).addclass('winner');
    
    $('g2t1_score.scorebox-elem,g2t2_score.scorebox elem').filter(函数()。{
    return$(this).is(':contains('+g2winner[i]+')');
    }).addclass('winner').preval().eq(2).addclass('winner');
    < /代码> 
    
    

    计分器允许用户向左和向右导航以按日期查看游戏分数。成功团队的突出显示(通过addclassmethod)非常有效,直到我有一个失败的团队从不同的日期获得与上一个获胜团队相同的分数。观察:

    您可以在这里看到它的实际应用:https://cbnmensbasketball.weebly.com/

    我知道为什么会发生这种情况,但我是一个业余程序员,我不确定如何改变我拥有的东西,因此只有当前游戏的获胜团队才能通过filter.功能进行匹配。可能添加一个绑定到每个scorebox grid的计数器(上面的whitedivs)并添加每个数组中元素的索引必须与计数器匹配的条件?建议?

    计分器允许用户向左和向右导航以按日期查看游戏分数。突出显示获胜队伍(通过 addClass 方法)很好地工作,直到我有一个输了的球队和以前的赢了的球队在不同的日期有相同的分数。观察:

    enter image description here

    enter image description here

    您可以在这里看到它的实际作用: https://cbnmensbasketball.weebly.com/ .

    我知道为什么会发生这种情况,但我是一个业余程序员,我不知道如何改变我拥有的东西,以便只有当前比赛的获胜球队与 filter 功能。可能要加一个计数器 scorebox-grid (白色 div 并添加条件,即每个数组中元素的索引必须与计数器匹配?建议?

    1 回复  |  直到 7 年前
        1
  •  1
  •   cнŝdk    7 年前

    实际上,如果你看看 .filter() jQuery docs ,你可以看到,它 callback 函数有两个参数,第一个参数是 index 被治疗者的 element :

    功能

    Type: Function (整数 指数 元素 要素 )=>布尔值

    用于测试集合中每个元素的函数。这是 当前的dom元素。

    所以这里要做的就是通过这个 指数 在回调函数中,并将其与 i 变量,因此它只需要 要素 考虑到:

    $('#g2t1_score.scorebox-elem, #g2t2_score.scorebox-elem').filter(function (index) {
        return index == i && $(this).is(':contains('+g2winner[i]+')');
      }).addClass('winner').prevAll().eq(2).addClass('winner');