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
答案 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