Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE8:动态类样式不';不适用_Javascript_Css_Internet Explorer 8 - Fatal编程技术网

Javascript IE8:动态类样式不';不适用

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

例如,我有以下CSS:

#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代码,以查找语法错误