1

クロス ブラウザーの 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 = "animationend";
 listener.substr(9, 10);    // returns "end";

なぜ?

4

2 に答える 2

5

substrとの違いsubstringは次のとおりです。

text.substr(a, b); //a=index to start, b=amount of letters to capture

text.substring(a, b); //a=index to start, b=index to stop 

したがって、あなたの場合、次を使用できます:

listener.substr(9, 1); 

また

listener.substring(9, 10);
于 2013-08-18T15:02:32.723 に答える