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