我无法让.addClass在IE11

时间:2018-04-04 13:31:19

标签: javascript jquery google-chrome internet-explorer-11

function redrawButtonToolbar() {
    //debugger;
    var buttonYears = window.availableButtonYears;

    $(".year-btn").removeClass('hidden').each(function(index) {
        var yearBtn = $(this).find('input').val();
        console.log("buttonYears: " + buttonYears + " yearBtn: " + yearBtn);

        if(yearBtn === 'all') {
            return
        }

        if(!buttonYears.indexOf(yearBtn) !== -1) {
            $(this).addClass('hidden')
            return
        }

    })

}

**从另一个函数调用

window.availableButtonYears = _.uniq(_.map(_.filter(window.data, selectionFilter), "Year"));

当我运行调试器时,我得到以下值存储在window.availableButtonYears 2014,2015,2016

上述代码在Chrome中运行良好,但在IE11中无效。

已更新 来自console.log

buttonYears: 2014,2015,2016 yearBtn: all
buttonYears: 2014,2015,2016 yearBtn: 2017
buttonYears: 2014,2015,2016 yearBtn: 2016
buttonYears: 2014,2015,2016 yearBtn: 2015
buttonYears: 2014,2015,2016 yearBtn: 2014

2 个答案:

答案 0 :(得分:2)

问题是indexOf如果找不到任何内容,则会返回-1。不一定是假的。

    if(buttonYears.indexOf(yearBtn) !== -1) {

答案 1 :(得分:0)

检查你对indexOf的使用。它似乎与使用该功能的常用方式不匹配,这使我怀疑你误导了它。

此代码表示您具体检查“yearBtn”是否在索引0处:

if(!string.indexOf("needle"))

这相当于这段代码:

if(string.indexOf("needle") == 0) //the string is at index 0

这样做意味着你要检查字符串中是否存在“yearBtn”:

if(string.indexOf("needle") >= 0) //the string is present

if(string.indexOf("needle") < 0) //the string is not present