2015-07-28 94 views
-2

我正在嘗試開發自己的進度條。此時,我想單擊按鈕時更新我的​​進度條。我已將一個變量分配給一個函數,該函數在點擊按鈕時被調用。在JQuery中爲變量分配函數

應用程序不能正常運行,因爲該函數返回一個對象,我需要一個整數。我試圖做出轉換,但我不能。這是代碼:

<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
    <script> 
     $(document).ready(function() {  
      var val = $('#boton').click(function() { 
       return Number(Math.floor(Math.random() * 100 + 1)); 
      }); 
      $("#porcentaje").text(val + '%'); 
      $('#progressBar div').css("width", val.toString() + "%");   
     }); 
    </script> 
</head> 
<body> 
    <form id="formulario"> 
     <div id="progressBar"> 
      <div></div> 
     </div> 
     <div id="porcentaje"> 
     </div>  
     <input type="button" id="boton" value="Start" /> 
    </form> 
</body> 

enter image description here

我怎樣才能解決呢?

謝謝。

+0

'parseInt函數(X,10);'? – birdspider

+1

您的變量「val」是您分配給按鈕的單擊事件的函數,而不是函數返回的值。我想你需要學習更多關於javascript的函數......看看Shomz的答案。 – Kamelkent

回答

1

val是不是你認爲在這種情況下的代碼。 .click()方法返回對jQuery選擇器對象的引用,這就是爲什麼你沒有得到數字值。看到這一點:

$(document).ready(function() { 
 
    var val = 0; 
 
    $('#boton').click(function() { 
 
    val = Number(Math.floor(Math.random() * 100 + 1)); 
 
    $("#porcentaje").text(val + '%'); 
 
    $('#progressBar div').css("width", val.toString() + "%"); 
 
    }); 
 
    setInterval(function(){ 
 
    alert("Val is currently: " + val); 
 
    }, 5000); 
 
});
#progressBar div {height: 10px; background: #eee; width: 0}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id="formulario"> 
 
    <div id="progressBar"> 
 
    <div></div> 
 
    </div> 
 
    <div id="porcentaje"> 
 
    </div> 
 
    <input type="button" id="boton" value="Start" /> 
 
</form>

+0

之內。起初,我的代碼就像你寫的那樣。這個代碼的問題是,除了點擊按鈕的時刻,val始終爲0,並且我希望將val的值存儲在點擊按鈕函數之外。 – user2656997

+0

我的例子*確實*存儲了點擊回調函數外的val。你在做什麼?我已經更新了我的答案,以便您可以每5秒鐘在警報中看到'val'的實際值。 – Shomz

1

.click()將返回調用它的相同jQuery對象,這就是爲什麼你得到Object作爲輸出。

相反,你只是需要移動這臺事件處理程序中的文本和CSS像

$(document).ready(function() { 
 
    var val; 
 
    $('#boton').click(function() { 
 
    val = Number(Math.floor(Math.random() * 100 + 1)); 
 
    $("#porcentaje").text(val + '%'); 
 
    $('#progressBar div').css("width", val + "%"); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<form id="formulario"> 
 
    <div id="progressBar"> 
 
    <div></div> 
 
    </div> 
 
    <div id="porcentaje"> 
 
    </div> 
 
    <input type="button" id="boton" value="Start" /> 
 
</form>

+0

http://jsfiddle.net/arunpjohny/1s6r4f2L/ –

+0

起初,我的代碼就像你寫的。這個代碼的問題是,除了點擊按鈕的時刻,val始終爲0,並且我希望將val的值存儲在點擊按鈕函數之外。 – user2656997

+0

@ user2656997然後只是讓'val'成爲一個閉包變量,而不是將其作爲本地變量......然後在'val'的dom就緒處理函數值中將會改變.... –