2012-02-25 113 views
0

我有一個頁面,用戶可以按左+右鍵滾動1-10之間的數字。Javascript變量滾動問題

默認值爲0,顯示空白。

底部有兩個按鈕,允許用戶「清除」數字 - 將其重置爲0.或者選擇「隨機數」,隨機選擇一個數字。

之後,用戶可以將這些數字提交到數據庫中。

我的問題是,如果用戶要滾動到5(例如),請點擊shuffle然後提交,它會提交'5'而不是它應該產生的隨機數。

此外,如果用戶只點擊'shuffle'然後提交,它會輸入'0'。

與'清除'按鈕的問題是相似的,如果用戶滾動到5,然後命中重置,變量將保留在'5'時提交。

我可能過於複雜的東西很簡單,如果我很抱歉,但這是令人討厭的。

三江源〜

+0

你必須向我們展示一些代碼。否則無法幫助你。 – Hogan 2012-02-25 16:00:49

+0

您可以發佈您的代碼,以便可以看到它有什麼問題嗎? – 2012-02-25 16:02:29

+0

糾正我,如果我錯了: 有3個按鈕,提交,重置和洗牌。 它們低於最初包含數字0的文本字段。當他們按左或右時,數字增加/減少。 當他們按下重置,數字再次變爲0。 當他們按shuffle時,數字變成一個隨機數。 當他們按提交時,號碼被髮送到數據庫。 這一切都對嗎? – rcplusplus 2012-02-25 16:20:13

回答

0

我不能完全肯定是什麼問題,不看你的代碼。我得到的感覺是這樣的:

的Javascript

var opNumb = 0; //default number 

left = function(){if (opNumb>0) opNumb--; 
         updateNumb(opNumb);} 
right = function(){if (opNumb<10) opNumb++; 
         updateNumb(opNumb);} 

def = function(){opNumb=0; 
       updateNumb(opNumb);} //function to return to default 

randomNumb = function(){opNumb = Math.floor(Math.random() * 11); 
         updateNumb(opNumb);} 

updateNumb = function(Numb){document.forms[0].opVal.value = Numb;} 
window.onkeydown = press;   //bind keydown to press function 

function press(e){ 
if (e.keyCode == 37) left(); 
if (e.keyCode == 39) right() 
    } 

HTML表單

<form id="frm1"> 
<input type="text" name="opVal" value="0"/><br /> 
<input type="button" value="left" onclick="left()"/><input type="button" value="right" onclick="right()"/><input type="button" value="Clear" onclick="def()"/><input type="button" value="Shuffle" onclick="randomNumb()"/><br /> 
<input type="button" value="Submit form" onclick="alert(opNumb);"/> 
</form>​ 

什麼是您的形式是什麼樣子?您很可能在設置值時遇到問題?

Link to example

0

這聽起來像你的號碼沒有保存,因此無論何時更新屏幕上的數字我會節省數再這樣,你應該總是被髮送,你看到的數字。

var number = 0; 
//All your events to call the different functions 

function moveLeft{ 
    //logic 
    reset(num); 
} 
function moveRight{ 
    //logic 
    reset(num); 
} 
function shuffle{ 
    //logic 
    reset(num); 
} 
function reset{ 
    //logic 
    reset(num); 
} 

reset(num){ 
    number = num; 
    //update the HTML 
}