Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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 jQuery+;IE8=对象不';不支持此属性或方法。如何解决这个问题?_Javascript_Jquery_Internet Explorer_Internet Explorer 8 - Fatal编程技术网

Javascript jQuery+;IE8=对象不';不支持此属性或方法。如何解决这个问题?

Javascript jQuery+;IE8=对象不';不支持此属性或方法。如何解决这个问题?,javascript,jquery,internet-explorer,internet-explorer-8,Javascript,Jquery,Internet Explorer,Internet Explorer 8,IE8给了我以下错误: 对象不支持custom.js第82行字符7上的此属性或方法 以下是带有行号的代码: 78 function transpose(chord, increment){ 79 var scale = ["C", "C#", "D", "Es", "E", "F", "F#", "G", "As", "A", "B", "H"]; 80 return chord.replace(/[CDEFGABH]#?s?/g, 81 function(match){ 82

IE8给了我以下错误:

对象不支持custom.js第82行字符7上的此属性或方法

以下是带有行号的代码:

78 function transpose(chord, increment){
79   var scale = ["C", "C#", "D", "Es", "E", "F", "F#", "G", "As", "A", "B", "H"];
80   return chord.replace(/[CDEFGABH]#?s?/g,
81   function(match){
82      var i = (scale.indexOf(match) + increment) % scale.length;
83      return scale[ i < 0 ? i + scale.length : i ];
84   });
85 }
78函数转置(和弦,增量){
79 var量表=[“C”、“C”、“D”、“Es”、“E”、“F”、“F”、“G”、“As”、“A”、“B”、“H”];
80回弦。更换(/[CDEFGABH]#?s?/g,
81功能(匹配){
82变量i=(标度索引(匹配)+增量)%标度长度;
83返回刻度[i<0?i+刻度长度:i];
84   });
85 }
我应该修改什么才能使代码在IE8中工作?它在Firefox/Chrome和IE9中都能正常工作。

您可以尝试一个,这是必需的,因为
indexOf
是ECMAScript第5版的一部分,因此并非所有浏览器都能实现(实际上只有IE8和更低版本)

if(!Array.prototype.indexOf){
Array.prototype.indexOf=函数(searchElement/*,fromIndex*/){
“严格使用”;
if(this==void 0 | | this==null){
抛出新的TypeError();
}
var t=对象(本);
var len=t.length>>>0;
如果(len==0){
返回-1;
}
var n=0;
如果(arguments.length>0){
n=数量(参数[1]);
if(n!==n){//验证是否为NaN的快捷方式
n=0;
}else如果(n!==0&&n!==无穷大&&n!===无穷大){
n=(n>0 | |-1)*数学地板(数学abs(n));
}
}
如果(n>=len){
返回-1;
}
var k=n>=0?n:Math.max(len-Math.abs(n),0);
对于(;k
尝试调用函数时向其传递哪些参数?@Yoshi:这种解决方案很有效。你知道我应该把代码放在文档内部还是外部吗?我现在在外面,不知道是否可以。DarinDimitrov:“chord”是一个字符串,“increment”是1或-1可以将其放在外部,因为没有必要让dom或窗口准备好应用此修复。@Yoshi请将其作为答案提交,以便我可以接受它?
if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
        "use strict";
        if (this === void 0 || this === null) {
            throw new TypeError();
        }
        var t = Object(this);
        var len = t.length >>> 0;
        if (len === 0) {
            return -1;
        }
        var n = 0;
        if (arguments.length > 0) {
            n = Number(arguments[1]);
            if (n !== n) { // shortcut for verifying if it's NaN
                n = 0;
            } else if (n !== 0 && n !== Infinity && n !== -Infinity) {
                n = (n > 0 || -1) * Math.floor(Math.abs(n));
            }
        }
        if (n >= len) {
            return -1;
        }
        var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
        for (; k < len; k++) {
            if (k in t && t[k] === searchElement) {
                return k;
            }
        }
        return -1;
    }
}