2014-08-30 4 views
0

사용자 입력을 받아 입력을 단어와 비교할 페이지를 만들었습니다. 아이디어는 사용자가 단어를 추측 할 수있는 6 가지 기회가 있다는 것입니다. 사용자가 단어를 추측하거나 축소 실행 한 경우의 새 게임를 시작 맞춰 변경됩니다 클릭 버튼을 추측. 내가 얻은 모든 것.jQuery로 페이지 새로 고침

그러면 사용자가 게임 시작 버튼을 클릭하면 페이지가 원래 값으로 재설정됩니다. 여기서 문제가있는 곳입니다. 내 버튼이 새 값과 새 ID로 변경되지만 버튼을 클릭하면 게임이 계속 재생되고 다시 클릭하면 재설정됩니다. 첫 번째 클릭에서 왜 쉬지 않고 있습니까? 여기

은 함수의 일부가

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); 
} 

당신은 항상 새로 고침, 같이 location.href = 같이 location.href 사용 여기에 전체 코드 http://liveweave.com/psAsxh

답변

1

나는 고칠 수있었습니다.

  • 을 사용자가 추측의 부족 때 또는 그럼 난에 두 조건을 추가 제출 버튼의 idstartNew
  • 로 변경됩니다 올바른 일을 추측 : 여기가 제대로 실행되도록 할 수 있었다 어떻게 빈 텍스트는 텍스트 상자가 비어 있는지 여부를 코드가 확인하는 곳을 확인합니다. 코드는 guestGuess 인 경우에도 id이 있는지 확인합니다.

내가 빈 창을 클릭했을 때 코드 일부가 실행 중이었기 때문에 문제가 발생했습니다. 여기 http://liveweave.com/SZDKHz

코드를 업데이트

모든 도움을 주셔서 너무 감사드립니다.

+0

당신이 직접 고쳐 주셔서 기쁘게 생각합니다 - 사소한 세부 사항 : 확실하게 카운터로 파트를 수정하겠습니까? 현재 새 게임을 시작하면 0부터 카운트되기 시작합니다 (예 : 두 번째 게임의 두 번째 잘못된 추측 값 -2 등). –

0

을 찾을 수 있습니다 보이지만, 순수한 자바 스크립트 어떻게 jquery보다는.

0

그냥 location.reload (true)를 사용하면 페이지가 캐시가 아닌 서버에서 다시로드됩니다. 참고 : https://developer.mozilla.org/en-US/docs/Web/API/Location.reload

업데이트 : 게임을 점검했지만 여전히 결과를 망칠 줄을 찾고 있습니다. 나는 방금 #guess#startNew을 클릭 할 때 호출 된 함수에 대해 console.log를 추가했으며 결과는 다음과 같습니다. 최대 추측 후 #startNew 함수가 호출되었지만 다음 번의 클릭으로 두 함수가 모두 호출됩니다. 두 번째 버튼을 #startNew에 추가하기 만하면 현재 코드가 작동하지 않는 이유를 고칠 필요없이 매우 쉽게 (게으른) 접근 방식을 고칠 수 있습니다. 따라서 단일 버튼의 기능을 변경하는 대신에 두 개의 단추입니다. 버튼의 ID를 변경하지 않고 클릭시에만 함수를 호출하고 매개 변수를 처리하도록 함수를 조정할 수 있습니다 (예 : function handleButton (value) {... }). 그리고 게임의 추측 부분을 처리하는 추측에 대해서는 start-new 그것은 시작 부분을 처리합니다. 단지 handleButton("guess")handleButton("new")을 호출합니다. 이미이 게임을 코딩 했으므로이를 처리 할 수 ​​있다고 생각합니다.)

+0

위치를 추가하더라도.reload (true) 다시로드하려면 버튼을 두 번 클릭해야합니다. 내 페이지가 캐시에서 처리하고 있다고 생각하지 않습니다. – Tavo

+0

좋아, 방금 두 번 게임을했는데 무슨 뜻인지 알 것 같아. 코드를 살펴 보겠습니다. 제출할 click() 이벤트를 바인드/바인딩 해제하는 방법이있는 것처럼 보입니다. –

+0

정말 고맙습니다. – Tavo