1

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

请帮忙!

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";
}
4

1 回答 1

0

您不应将default其用作变量名,因为它是保留的。只需使用不同的名称即可。

文档(7.6.1.1 关键字)中,

以下标记是 ECMAScript 关键字,不得用作 ECMAScript 程序中的标识符:
break、do、instanceof、typeof、case else、new、var、catch、finally、return、void、continue、for、switch、while、debugger、函数,this,with, default,if,throw,delete,in,try

编辑:正如@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');
于 2013-08-07T23:34:09.337 回答