2013-10-31 60 views
0

我想在這種情況下使用兩個div按鈕,而不是提示符()。那可能嗎?我嘗試過使用函數,但是我沒有從函數中獲取值。這是我的一些代碼。而不是提示的HTML按鈕

var gaming = true 

var number = Math.floor(Math.random() * 52) + 1; 
var nextnumber = Math.floor(Math.random() * 52) + 1; 
var rounds = 1 
console.log(number) 
console.log(nextnumber) 


while(gaming) { 
var guess = prompt(More or less?"); 

if (guess === "more") { 
    if (number <= nextnumber) { 

對不起,我的英語不好!

回答

1

這是一個非常廣泛的話題,我真的不應該走近它。但我會反正。

您之前的程序版本基本上是一個控制檯應用程序。這些都是同步的,在繼續之前等待用戶輸入。

不幸的是,這不是網頁或Web應用程序的工作方式。對於它的價值,這不是基於Windows UI的應用程序的工作方式。一旦你添加了一個UI,你就進入了事件驅動的邏輯流程。任何事件都可以在任何時候發生,並且您必須能夠處理該事件。

除此之外,還有很多您的研究和實驗,我可以幫助你的唯一方法就是給你一點點餵養。這是一個可以幫助你開始的樣本。它並不漂亮,它有一些缺陷,但它會讓你看到如何進行異步編程。

HTML

<textarea id="console" style="height: 400px; width: 600px}"></textarea> 
<div id="more">More</div> 
<div id="less">Less</div> 

的JavaScript

var failed = false; 
var number; 
var nextNumber = Math.floor(Math.random() * 52) + 1; 
var rounds = 1; 

function newRound() { 
    number = nextNumber; 
    nextNumber = Math.floor(Math.random() * 52) + 1; 
    document.getElementById("console").innerHTML += "\nYou are in round " + rounds + ". The current number is: " + number + ". Guess More or Less."; 
} 

function checkFailed() { 
    if (failed) { 
     var ans = prompt("You lost. Try again?"); 
     if (ans == "Yes") { 
      rounds = 1; 
      document.getElementById("console").innerHTML = ""; 
      failed = false; 
      newRound(); 
     } 
    } 
} 

document.getElementById("more").onclick = function() { 
    checkFailed(); 
    if (nextNumber >= number) { 
     document.getElementById("console").innerHTML += "\nGood guess! The next number was " + nextNumber; 
     ++rounds; 
     newRound(); 
    } else { 
     document.getElementById("console").innerHTML += "\nSorry, you failed. The next number was " + nextNumber; 
     failed = true; 
    } 
}; 

document.getElementById("less").onclick = function() { 
    checkFailed(); 
    if (nextNumber <= number) { 
     document.getElementById("console").innerHTML += "\nGood guess! The next number was " + nextNumber; 
     ++rounds; 
     newRound(); 
    } else { 
     document.getElementById("console").innerHTML += "\nSorry, you failed. The next number was " + nextNumber; 
     failed = true; 
    } 
}; 

newRound(); 

你可以用它HERE

有幾件事情起到不te:

  • 除了第一個newRound之外的所有遊戲玩法都是由用戶發起的。用戶必須點擊遊戲才能前進。
  • 其中的一些類似於你之前做過的 - 聲明變量並設置它們。但遊戲邏輯被移入按鈕處理程序。
  • 我們必須處理用戶在丟失後按下按鈕的情況。 (有更好的方法去做,比我給你的方式更好
  • 我們不能假定有一個控制檯,所以我們假冒我們自己
  • 我們充分利用函數 - 不僅僅是回調,而是做日常任務。
  • 回調被找到感興趣的元素,並設置處理器爲它的事件註冊。有很多的events你可以註冊。
  • 的回調實際上可以帶參數的更復雜的功能,但這段代碼沒有必要。
相關問題