2013-03-21 3 views
0

콘솔에 5 번과 8 번 행에 오류가 표시됩니다. 오류는 "잡히지 않은 삽입 함수 인수가 문자열이 아닙니다."입니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사!잡히지 않은 삽입 함수 인수가 문자열이 아닙니다.

$(function() { 
var animation = false; 
function typed(term, message, delay, finish) { 
    animation = true; 
    var da = 0; 
    term.set_prompt(''); 
    var interval = setInterval(function() { 
     term.insert(message[da++]); 
     if(da > message.length) { 
      clearInterval(interval); 
      setTimeout(function() { 
       term.set_command('') 
       term.set_prompt(message + ' '); 
       animation = false; 
       finish && finish(); 
      }, delay); 
     } 
    }, delay); 
} 
$('#fyeah').terminal(function(cmd, term) { 
    var finish = false; 
}, { 
    name: 'test', 
    greetings: null, 
    onInit: function(term) { 
     var msg = "testing"; 
     typed(term, msg, 150, function() { 
      finish = true; 
     }); 
    }, 
    keydown: function(e) { 
     if (animation) { 
      return false; 
     } 
    } 
}); 

}); message[da++] "문자열 아니다"때

+0

을 사용합니다. 입력 된 함수에 전달 될 때 메시지에서 전달할 내용을 알아야합니다. 내 생각에 그것은 단지 문자열로 올바르게 포맷되지 않았다는 것입니다. – iAmClownShoe

+0

어떤 플러그인을 사용하고 있습니까? – Bergi

+0

@Bergi는 [this one] (http://terminal.jcubic.pl/)처럼 보입니다 – Pointy

답변

2

세 가지 경우가 있습니다

  • message 문자열의 단일 문자를 얻기를위한 브라켓 표기법을 지원하지 않는 빈 문자열
  • (구) IE이며, 더 나은 da == message.length 루프의 마지막 반복에서 .charAt() 메서드
  • 을 사용하십시오. da이 이미 길이보다 큰 경우에만 끝납니다. 그러나 인덱스는 0부터 시작하여 0에서 length-1까지 실행됩니다.

것은 물론 이것은 당신이 제공 한 코드로 대답 할 수 없습니다, 그것을 해결

// init 
var da = 0; 
var interval = setInterval(function() { 
    if (da < message.length) { 
     term.insert(message.charAt(da++)); // maybe better move the incrementing 
              // out, to the end of the loop 
    } else { 
     clearInterval(interval); 
     // teardown/callback 
    } 
}, delay); 
+0

감사합니다. @Bergi! – Jordan

관련 문제