Javascript substr问题

Javascript substr问题,javascript,Javascript,我正在尝试创建一个跨浏览器animationListener,但是substr函数有问题 function animationEventListener(elem, listener, callback){ if(!elem){return;} if(listener.length < 0){ console.error("Add event type listener"); } listener = listener.toLowerCase();

我正在尝试创建一个跨浏览器animationListener,但是
substr
函数有问题

function animationEventListener(elem, listener, callback){
       if(!elem){return;}

    if(listener.length < 0){ console.error("Add event type listener"); }

    listener = listener.toLowerCase();

    var _prefix = ["", "o", "webkit", "MS"];
    var _anmkeyword = new String("animation");
    var _keywordlength = _anmkeyword.length;
    var _nlistener;

    for(var i = 0; i < 4; i++){
        if(_prefix[i] == "MS" || _prefix[i] == "webkit"){
            var _ol = _keywordlength + 1;
            _nlistener = listener.substr(0, 1).toUpperCase() 
                + listener.substr(1, listener.length - (listener.length - _keywordlength)-1) 
                + listener.substr(9, 10).toUpperCase() 
                + listener.substr(_keywordlength+1, listener.length);
        }    
        console.log(_prefix[i] + listener + "\n" + _nlistener);
    }

}

为什么?

函数的第二个参数是要提取多少字符(长度)。第一个参数设置从何处开始。你可以读更多

所以你的代码行是:
listener.substr(9,10)基本上是说“从第9个索引中给我10个字符”。但是,由于第9个索引后没有10个字符,因此该命令将返回它能返回的所有内容,即字符串的其余部分

要在第9个索引后仅提取一个字符,您只需使用以下命令:

listener.substr( 9, 1 );
或者,如果要提取两个索引之间的字符串,可以使用:


substr
函数的第二个参数是要提取的字符数(长度)。第一个参数设置从何处开始。你可以读更多

所以你的代码行是:
listener.substr(9,10)基本上是说“从第9个索引中给我10个字符”。但是,由于第9个索引后没有10个字符,因此该命令将返回它能返回的所有内容,即字符串的其余部分

要在第9个索引后仅提取一个字符,您只需使用以下命令:

listener.substr( 9, 1 );
或者,如果要提取两个索引之间的字符串,可以使用:

和之间的区别是:

因此,在您的情况下,您可以使用:

listener.substr(9, 1); 

和之间的区别是:

因此,在您的情况下,您可以使用:

listener.substr(9, 1); 


您希望得到什么结果?您可能希望使用
substring
方法。在这段代码中,substr需要一个字母“e”,但他返回“end”,为什么?你想要:
listener.substr(9,1)substring
方法。在这段代码中,substr需要一个字母“e”,但他返回“end”,为什么?你想要:
listener.substr(9,1)listener.substr(9, 1); 
listener.substring(9, 10);