Javascript IE8:动态类样式不';不适用
例如,我有以下CSS:Javascript IE8:动态类样式不';不适用,javascript,css,internet-explorer-8,Javascript,Css,Internet Explorer 8,例如,我有以下CSS: #main { width: 150px; } #main.active { width: 250px; } 如果我将使用JS添加或删除类active;在IE8中,元件的宽度保持在150px。我尝试添加!重要信息,但它甚至没有发现类名已更改。有什么解决办法吗?以下是使用的功能: tabScroller.onclick = function() { if(hasClass(this.parentNode, 'active')) removeClas
#main {
width: 150px;
}
#main.active {
width: 250px;
}
如果我将使用JS添加或删除类active
;在IE8中,元件的宽度保持在150px。我尝试添加!重要信息
,但它甚至没有发现类名已更改。有什么解决办法吗?以下是使用的功能:
tabScroller.onclick = function() {
if(hasClass(this.parentNode, 'active')) removeClass(this.parentNode, 'active');
else addClass(this.parentNode, 'active');
}
if(typeof String.prototype.trim !== 'function') {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, '');
}
}
function hasClass(elem, theClass) {
var className = elem.className;
if(className.indexOf(theClass) < 0) return false;
else return true;
}
function addClass(elem, theClass) {
var className = elem.className;
className += ' ' + theClass;
elem.className = className.trim();
return false;
}
function removeClass(elem, theClass) {
var className = elem.className;
className = className.replace(theClass, '');
elem.className = className.trim();
return false;
}
tabScroller.onclick=function(){
if(hasClass(this.parentNode,'active'))removeClass(this.parentNode,'active');
else addClass(this.parentNode,'active');
}
if(typeof String.prototype.trim!=“函数”){
String.prototype.trim=函数(){
返回此。替换(/^\s+|\s+$/g,');
}
}
函数hasClass(元素,类){
var className=elem.className;
if(className.indexOf(theClass)<0)返回false;
否则返回true;
}
函数addClass(元素,类){
var className=elem.className;
类名+=''+类;
elem.className=className.trim();
返回false;
}
函数removeClass(元素,类){
var className=elem.className;
className=className.replace(类“”);
elem.className=className.trim();
返回false;
}
在JSBIN上对此问题进行演示。在我看来,代码“if(className.indexOf(theClass)<0)返回false;else返回true;”无效。也许问题就在这里……@GiacomoPaita它可以在其他浏览器上工作;JS代码IE8没有与其他浏览器相同的JS解析器,它比较旧。检查jslinter中的js代码,以查找语法错误