2016-07-04 113 views
1
<head> 
<script> 
function getRandomArbitrary(min, max) { 

    var r = Math.floor(Math.random() * (max - min + 1) + min); 
    document.getElementById('demo').innerHTML = r; 
} 
</script> 
</head> 

<body> 
<h1>randomize</h1> 
    a: <input type="text" id='low'><br> 
    b: <input type="text" id='high'><br> 
    <button onclick="getRandomArbitrary(document.getElementById('low').value,document.getElementById('high').value)">Get</button> 


<div id='demo'></demo> 
</body> 

我有上面的代碼,通過它我試圖在文本a和b給出的範圍之間生成隨機數。當我手動將值傳遞給該函數(比如10,15)時,它可以正常工作(例如,給出13)。但是當我按下按鈕並要求它從文本中獲取值並計算該範圍內的隨機數時,它不會這樣做,並計算超出範圍(有時)的數字。隨機數字JavaScript

我花了很多時間在上面,不能看是什麼問題。請幫幫我。

回答

3

角色值作爲Number然後傳遞給功能

Unary plus (+)unary plus operator之前它的操作數,並評估爲它的操作數,但試圖將其轉換成number,如果它不是已經沒有了。

function getRandomArbitrary(min, max) { 
 
    var r = Math.floor(Math.random() * (max - min + 1) + min); 
 
    document.getElementById('demo').innerHTML = r; 
 
}
<h1>randomize</h1> 
 
a: 
 
<input type="text" id='low'> 
 
<br>b: 
 
<input type="text" id='high'> 
 
<br> 
 
<button onclick="getRandomArbitrary(+document.getElementById('low').value,+document.getElementById('high').value)">Get</button> 
 
<div id='demo'></div>

+0

完美。現在工作正常。非常感謝。 –

1
Math.floor(Math.random() * max) + min 
+0

問題不在於找到隨機數的邏輯。問題在於當我從html頁面傳遞值時。 –

4

@Ojas芥蘭,首要的事情。最小和最大值正在傳遞字符串。嘗試首先將它們解析爲整數。

getRandomArbitrary(parseInt(document.getElementById('low').value),parseInt(document.getElementById('high').value)); 

另外我也請修改getRandom函數如下。沒有必要把這筆錢湊到一起嗎?

function getRandomArbitrary(min, max) { 

    var r = Math.floor(Math.random() * (max - min + 1))+ min; 
    document.getElementById('demo').innerHTML = r; 
}