【问题标题】:I can't get .addClass to work in IE11我无法让 .addClass 在 IE11 中工作
【发布时间】:2018-04-04 22:01:28
【问题描述】:
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

【问题讨论】:

  • 控制台有错误吗?你有没有运行 console.log() 看看有什么不同?
  • 控制台中没有错误或警告。
  • 所以console.log(buttonYears);console.log(yearBtn)console.log(buttonYears.indexOf(yearBtn), !buttonYears.indexOf(yearBtn)) 找出原因......
  • 更新代码并从 console.log 生成输出
  • 您使用新错误 !buttonYears.indexOf(yearBtn) !== -1 更新了您的代码,并且更改原始代码以使用其中一个答案并不总是最好的做法。

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


【解决方案1】:

问题是indexOf 如果没有找到任何东西就会返回-1。不一定是假的。

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

【讨论】:

  • 当我这样做时,它删除了所有按钮,包括包含信息的按钮。我试图只删除不包含数据的按钮。
  • 使用调试器单步执行并查看值是什么,这个答案为您提供了为什么您的 addClass 永远不会被调用,您应该能够从这里找出原因
【解决方案2】:

检查您对 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

【讨论】:

  • 检查它是否不为零,它是评论,而不是答案。总有一天你会有足够多的代表发表评论......
  • 请原谅我没有研究他实际想要达到的目标,而是简单地告诉他他在滥用 indexOf。事实证明这是问题所在,所以我对我的回答感觉很好。
  • 问题在于您陈述答案的方式是评论而不是答案。我只是想帮助你做出更好的答案。如果你说的话。 Your use of indexOf is wrong 并提供代码使其成为一个很好的答案。
  • 好的。下次我会努力做得更好。谢谢。
猜你喜欢
  • 2023-03-27
  • 1970-01-01
  • 2018-04-18
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 2014-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多