2013-12-08 2 views
0

Я написал этот код для консольного типа ввода cmd. Сам код работает отлично, но любой код, который я размещаю после него, не работает. Я пытался понять это на некоторое время, и я довольно застрял.Javascript перестает работать после этого кода

Вот проблема JSFiddle. http://jsfiddle.net/GWj4b/

/** 
* CONSOLE 
*/ 

setInterval(cursorBlink, 500); 
function cursorBlink() { 
    if($('#cursor').css('visibility') == 'hidden'){ 
     $('#cursor').css({'visibility': 'visible'}); 
    } else { 
     $('#cursor').css({'visibility': 'hidden'}); 
    } 
} 

var text = $('#type').html(); 
var text = text.replace(/<br>/g, '_'); 

$('#type').html(''); 

$.each(text.split(''), function(i, letter) { 
    setTimeout(function(){ 
     if(letter == '_'){ 
      $('#type').html($('#type').html() + '<br />'); 
     } else { 
      $('#type').html($('#type').html() + letter); 
     } 
    }, 100 * i); 
}); 
+1

Какие методы отладки вы уже пробовали? – helle

+0

Время, чтобы узнать, как работает [консоль ошибок JavaScript] (http://www.netmagazine.com/tutorials/javascript-debugging-beginners). – JJJ

+0

Во-первых: для отладки используйте консоль.log() '- и, конечно, консоль открыта, а не' alert() '. Иногда вы хотите, чтобы эффект прекратился, но в большинстве случаев это скорее помеха, чем польза, потому что вы можете сделать это лучше с помощью контрольных точек. Кроме того, консоль форматирует сложные данные (объекты, массивы) намного лучше. –

ответ

1

Если посмотреть в консоли журнала вы видите: Uncaught TypeError: Cannot call method 'replace' of undefined

текст не определен при вызове заменить на нем, потому что элемент, который вы ищете, не существует.

Вы можете проверить, чтобы увидеть, если он существует, как этого

if(text) { 
    text.replace(/<br>/g, '_'); 
} 

Javascript остановит выполнение, если она попадет ошибку во время выполнения, как это.

Рассмотрите дополнительную информацию об отладке этого типа проблемы с помощью dev tools или вашего эквивалента в браузере. Как только вы посмотрите на ошибку, ее довольно ясно, какая строка вызывает проблему.

Кстати, после добавления элементов, которые вы пытаетесь использовать, код выполняет. Если они, возможно, не существуют, вам нужно сделать проверку кода, и это хорошая привычка.

http://jsfiddle.net/GWj4b/1/

+0

Спасибо вам и остальным, которые вернулись с этим. элемент #type существует только на одной странице, тогда как сценарий запускается на всех страницах. Теперь я переведу этот код в свой собственный файл и вызываю его только на одной странице. Благодарю. – JazzyP

1

Вы не используете HTML-код справа?

после

$('#type') возвращается undefined, а затем вы text.replace(/<br>/g, '_');

вы не можете сделать undefined.replace, поэтому он выходит из строя, и выполнение останавливается.

Try добавить HTML-код для этого JS код

Кроме того, вы должны добавить JQuery к вашей скрипке, в рамочные & Extensions часть.

Смотрите эту скрипку http://jsfiddle.net/9748L/

1

Я просто отлажена его и, похоже, что текст не определен, поэтому, возможно, вы не создали элемент в HTML.

var text = text.replace(/<br>/g, '_'); 
0

Действительно вам не хватает какой-то HTML-код и текст вы пытаетесь манипулировать это undefined. Вы можете добавить следующий HTML-код,

<span id="type">is this what you try to do????</span><span id="cursor">_</span> 

для достижения эффекта вы стремитесь.

http://jsfiddle.net/JKp5z/

Смежные вопросы