Javascript js手风琴不工作IE9

Javascript js手风琴不工作IE9,javascript,jquery,html,css,internet-explorer,Javascript,Jquery,Html,Css,Internet Explorer,这一页上的第一个问题。我有一个动画css/js手风琴,它是我从这个页面中获取的,我刚刚在一个jsp web应用程序中实现了它 它在Chrome、Firefox和IE11中运行得非常好。但在IE 9中没有正确地显示。据我所知,有一些js组件(classList、setAttribute和querySelectorAll),我需要对它们进行多边形填充,以便在最后一个导航器中使功能正常工作 老实说,我一点也不知道如何填充这个js代码。所以如果有人能帮助我,我会非常感激 //uses class

这一页上的第一个问题。我有一个动画css/js手风琴,它是我从这个页面中获取的,我刚刚在一个jsp web应用程序中实现了它

它在Chrome、Firefox和IE11中运行得非常好。但在IE 9中没有正确地显示。据我所知,有一些js组件(classList、setAttribute和querySelectorAll),我需要对它们进行多边形填充,以便在最后一个导航器中使功能正常工作

老实说,我一点也不知道如何填充这个js代码。所以如果有人能帮助我,我会非常感激

    //uses classList, setAttribute, and querySelectorAll
//if you want this to work in IE8/9 youll need to polyfill these
(function(){
    var d = document,
    accordionToggles = d.querySelectorAll('.js-accordionTrigger'),
    setAria,
    setAccordionAria,
    switchAccordion,
  touchSupported = ('ontouchstart' in window),
  pointerSupported = ('pointerdown' in window);

  skipClickDelay = function(e){
    e.preventDefault();
    e.target.click();
  }

        setAriaAttr = function(el, ariaType, newProperty){
        el.setAttribute(ariaType, newProperty);
    };
    setAccordionAria = function(el1, el2, expanded){
        switch(expanded) {
      case "true":
        setAriaAttr(el1, 'aria-expanded', 'true');
        setAriaAttr(el2, 'aria-hidden', 'false');
        break;
      case "false":
        setAriaAttr(el1, 'aria-expanded', 'false');
        setAriaAttr(el2, 'aria-hidden', 'true');
        break;
      default:
                break;
        }
    };
//function
switchAccordion = function(e) {
    e.preventDefault();
    var thisAnswer = e.target.parentNode.nextElementSibling;
    var thisQuestion = e.target;
    if(thisAnswer.classList.contains('is-collapsed')) {
        setAccordionAria(thisQuestion, thisAnswer, 'true');
    } else {
        setAccordionAria(thisQuestion, thisAnswer, 'false');
    }
    thisQuestion.classList.toggle('is-collapsed');
    thisQuestion.classList.toggle('is-expanded');
        thisAnswer.classList.toggle('is-collapsed');
        thisAnswer.classList.toggle('is-expanded');

    thisAnswer.classList.toggle('animateIn');
    };
    for (var i=0,len=accordionToggles.length; i<len; i++) {
        if(touchSupported) {
      accordionToggles[i].addEventListener('touchstart', skipClickDelay, false);
    }
    if(pointerSupported){
      accordionToggles[i].addEventListener('pointerdown', skipClickDelay, false);
    }
    accordionToggles[i].addEventListener('click', switchAccordion, false);
  }
})();
//使用classList、setAttribute和querySelectorAll
//如果你想让它在IE8/9中工作,你需要多填充这些
(功能(){
var d=文件,
accordionToggles=d.querySelectorAll('.js accordionTrigger'),
狗尾草,
Set手风琴,
手风琴,
touchSupported=(窗口中的“ontouchstart”),
pointerSupported=(“pointerdown”在窗口中);
skipClickDelay=功能(e){
e、 预防默认值();
e、 target.click();
}
setAriaAttr=函数(el、ariaType、newProperty){
el.setAttribute(ariaType,newProperty);
};
SetAccordinaria=函数(el1、el2、扩展){
交换机(扩展){
案例“真”:
setAriaAttr(el1,'aria expanded','true');
setAriaAttr(el2,'aria hidden','false');
打破
案例“假”:
setAriaAttr(el1,'aria expanded','false');
setAriaAttr(el2,'aria hidden','true');
打破
违约:
打破
}
};
//作用
开关手风琴=功能(e){
e、 预防默认值();
var thisAnswer=e.target.parentNode.nextElementSibling;
var thisQuestion=e.target;
if(thisAnswer.classList.contains('is-collapsed')){
SetAccordinaria(这个问题,这个答案,'正确');
}否则{
SetAccordinaria(这个问题,这个答案,'假');
}
thisQuestion.classList.toggle('is-collapsed');
thisQuestion.classList.toggle('is-expanded');
thisAnswer.classList.toggle('is-collapsed');
thisAnswer.classList.toggle('is-expanded');
thisAnswer.classList.toggle('animateIn');
};

对于(var i=0,len=accordiontogles.length;i是IE9不支持的,所以如果需要IE9支持,你肯定要建立一个回退机制。

似乎CodePen在IE9上不起作用。我已经将你的代码复制到这里,它似乎可以工作。预期的行为是什么?我没有看到任何典型的accordion行为,我想IE9或其他。事实上,在IE9中,手风琴的所有元素都显示为扩展和静态。当您单击元素时,动画根本不起作用。似乎不可能在JSFIDLE上复制。哦,当然,完全可能在IE9中动画不起作用。动画是CSS过渡,对吗?如果你想填充大量的JS代码,你需要大量的JS代码。搞砸IE9?我们在这里开发的任何东西都是为了IE10+。在IE9中,动画是一场噩梦,大多数情况下需要大量的JS才能正常工作。如果IE9是一项要求,你最好创建一个不包括手风琴的后备设计。没错,在这种情况下动画与css转换一起工作。那么,你认为用IE9支持的css或js代码实现这个功能更可行吗?