2014-08-30 2 views
0

Я создал страницу, которая будет вводить пользователя, а затем сравните вход со словом. Идея состоит в том, что у пользователя есть 6 шансов угадать слово. Если пользователь угадывает слово или исчерпал угадывает кнопку щелкнул изменится с Guess в Начать новую игру. Все, что у меня получилось.Перезагрузите страницу с помощью jQuery

Идея заключается в том, что пользователь нажмет кнопку Начните игру, и страница будет сброшена до первоначальных значений, вот где я столкнулся с проблемой. Моя кнопка изменится на новое значение и новый идентификатор, но когда я нажму кнопку, игра по-прежнему будет воспроизводиться, а затем, когда я снова нажму на нее, и она будет сброшена. Почему он не отдыхает при первом нажатии?

Вот как часть функции выглядит

else if (theGuess.toLowerCase() == magicWord.toLowerCase()) 
{ 
    //The user guesses the correct word 
    $("input[type=text]").ready(function() { $("#guestGuess").addClass("unblur"); }); 
    $("input[type=submit]").val("Start a New Game"); 
    $("input[type=submit]").attr("id","startNew"); 
$('#guestGuess').val(''); 
$('#startNew').click(function() { 
     location.reload(); 
}); 
magicWordResult = "Your guess was " + theGuess + "! Nice going!"; 
//document.writeln("Your guess was: " + guestGuess + "\nand the magic word is " + magicWord); 
} 

Вы можете найти весь код здесь http://liveweave.com/psAsxh

ответ

1

Я смог ее исправить. Вот как я был в состоянии сделать его работать правильно:

  • Когда пользователь исчерпал догадки или угадать правильную работу, которую id кнопки подтверждения получает изменено на startNew
  • Затем я добавил двойное условие пустая проверка текста, где код будет проверять, пусто ли текстовое поле, а также код будет проверять, является ли id для кнопки отправки guestGuess.

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

Я обновил код здесь http://liveweave.com/SZDKHz

Большое вам спасибо за помощь.

+0

Рад, что вы исправили его самостоятельно - мелкие детали, чтобы быть уверенным: вы будете исправлять часть с помощью счетчика соответственно? В настоящее время, когда вы начинаете новую игру, она начинает отсчет с 0 (например, 2-я игра 2-го неправильного значения догадания -2 и т. Д.). –

0

Я всегда location.href = location.href, чтобы обновить, но чистый JavaScript а не jquery.

0

Просто используйте location.reload (true) - это приведет к перезагрузке страницы с сервера из кеша. Для справки: https://developer.mozilla.org/en-US/docs/Web/API/Location.reload

Обновление: проверили вашу игру и все еще смотрели на линии, испортившие результат. Я только что добавил console.log для функций, вызванных нажатием #guess и #startNew, и результат: после того, как max догадывается, вызывается функция #startNew, но каждый следующий щелчок вызывает обе функции. Есть очень простой (ленивый?) Подход, чтобы исправить это, не беспокоясь о том, почему текущий код не работает - просто добавьте вторую кнопку для #startNew, поэтому вместо изменения функциональности одной кнопки вы просто измените видимость две кнопки. Другой подход состоял бы в том, чтобы вызвать только один из функций, не меняя идентификатор кнопки, и отрегулировать функцию, чтобы обрабатывать параметр - например, function handleButton (value) {... } - и для догадок он просто обрабатывает часть догадки игры, для start-new он обрабатывает старт-новую часть - просто вызывает handleButton("guess") и handleButton("new"). Поскольку вы уже закодировали эту игру, я думаю, вы можете это обработать;)

+0

Даже если я добавлю место.reload (true) Мне еще нужно дважды щелкнуть кнопку, чтобы перезагрузить. Я не думаю, что моя страница делает это из кеша. – Tavo

+0

Хорошо, я только что дважды сыграл в вашу игру, и я думаю, что знаю, что вы имеете в виду. Посмотрим на код, похоже, что у него есть что-то делать, как вы связываете/отвязываете событие click() для отправки. –

+0

Большое спасибо matthias_h. – Tavo

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