2011-12-09 60 views
0

我在文本框下方有一個文本框和一組按鈕。假設發生的是用戶在文本框中填寫一個數字,該數字確定可以點擊多少個按鈕。例如,如果文本框的值爲2,則用戶只能選擇兩個按鈕,如果按鈕變成紅色,則選擇一個按鈕,如果該按鈕變爲或保持白色,則不選擇該按鈕。如何選擇正確數量的按鈕

現在的問題是,如果值爲1或以上,用戶可以選擇所有的按鈕,換句話說,如果他們只是繼續點擊按鈕,那麼所有按鈕都會變紅,什麼時候該發生什麼如果用戶超過該值,則會顯示一條錯誤消息,指出您已超出限制,如果要選擇另一個按鈕,請取消選擇一個按鈕。

如何獲取它,以便所選按鈕的數量與文本框中的值匹配?

代碼是在jsfiddle中,點擊here(出於一些奇怪的原因,它不讓我點擊任何按鈕和文本框允許在jsfiddle中輸入字母,即使在我的應用程序中使用精確的代碼,它工作正常。看功能btnclick(btn)來幫助你。)

回答

2

你正在重置每次點擊的總數,所以你不是真的在計數。將currenttotal = 0;移到點擊功能之外(並使用var聲明)。其次,你有很多相同的代碼。你也可以重複進行的按鈕有點更簡潔的.className分配:

for(var i = 65; i <= 90; i++) { // iterate over character codes for A to Z 
    var letter = String.fromCharCode(i); 
    document.getElementById("answer" + letter).className = "answerBtnsOff"; 
} 

你也可以把HTML中的類名與class="answerBtnsOff"屬性。你甚至可以通過JavaScript創建按鈕。這將使一些更清晰和更易讀的代碼,但當然這些優化是沒有必要的。

http://jsfiddle.net/7WwaK/3/

(有關的jsfiddle工作,你必須在左側面板中選擇no wrap (body),但是這的jsfiddle是如何插入的JavaScript。)

0

如果我得到你的權利,你應該做(恕我直言)以下這個:

  1. 移動var currenttotal = 0;以外的功能。您每次點擊一個按鈕時重置它。
  2. 用戶更改答案數後編輯currenttotal。因此將currenttotal = document.getElementById('numberAnswerTxt').value();行添加到名爲getButtons()的函數中。
  3. 你可以實現一個pimvdb建議,以減少你的代碼(=

請告訴我,如果這是工作。

循環