究竟是什么阻止这个脚本在IE8中工作? (IE8问题)

时间:2013-08-07 23:24:00

标签: javascript internet-explorer-8 navigation sliding

javascript不是我的强项,我找到了一个完全按我想要的方式设计的导航脚本(下面的Jsfiddle),但是我无法让它与IE8一起工作(有史以来最好的浏览器 sarcasm )。

请帮助!

http://jsfiddle.net/JSjY4/1/

window.onload = function () {
    var fine = [36, 34, 34, 34];
    var mitms = document.getElementsByClassName('mitm');
    var l0 = (mitms[0].offsetLeft + fine[0]);
    document.getElementById("nav_arrow").style.marginLeft = l0 + "px";

    for (var i = 0; i < mitms.length; i++) {

        mitms[i].fine = fine[i];

        mitms[i].onclick = function() {
            arr(this);
            var tmp = document.getElementsByClassName('mitm');


        }
    }

};

function arr(el) {
    var mitms = document.getElementsByClassName('mitm');
    var l = el.offsetLeft + el.fine;
    document.getElementById("nav_arrow").style.marginLeft = l + "px";
}

1 个答案:

答案 0 :(得分:0)

您不应将default用作变量名称,因为它是reserved。 请改用其他名称。

来自documentation(7.6.1.1关键字),

  

以下令牌是ECMAScript关键字,不能在ECMAScript程序中用作标识符:
      打破,       做,       的instanceof,       类型,       案件       其他,       新,       VAR,       抓住,       最后,       返回,       无效,       继续,       对于,       开关,       而,       调试器,       功能,       这个,       用,       默认下,       如果,       扔,       删除,       在,       尝试

编辑: 正如@CrazyTrain所说,document.getElementsByClassName不受支持。你可以用这样的垫片替换它:

function getElementsByClassName(needle) {
    var my_array = document.getElementsByTagName("*");
    var retvalue = new Array();
    var i;
    var j;
    for (i=0,j=0;i<my_array.length;i++) {
        var c = " " + my_array[i].className + " ";
        if (c.indexOf(" " + needle + " ") != -1) retvalue[j++] = my_array[i];
    }
    return retvalue;
}

你会这样称呼:

var mitms = getElementsByClassName('mitm');