我想爲我的學生創建一個動態工作表,所以每次他們做時都會看到不同的問題。我試圖創建的問題,即計算如果我從總數Y中取得X的百分比。Javascript:功能檢查評分答案是否有百分比超過2個小數位
這裏有3個函數一起工作,第一個函數產生一些數字,第二個函數調用第二個函數調用第三個來檢查它是否超過2個小數位,如果是,則第二個創建一個新的SCORE號碼,該號碼重複,直到它找到小數點後2位的答案,然後返回第一個起作用的SCORE號碼,它輸出它。
我總是收到三個輸出之一:未定義SCORE應該在哪裏,根本沒有輸出或工作問題。
我不明白它是如何工作的,有時會拋出undefined,並在其他時間完全沒有提供。
任何想法。
function scorePercent()
{
var output="";
var total = Math.floor((Math.random()*99)+1);
var score = Math.floor((Math.random()*(total-1))+1);
output = output + "<div>A score of " + chkScore(score,total) + " out of " + total + ".</div></br>";
document.getElementById("qOut").innerHTML=output;
}
function chkScore(n1,n2)
{
var answ = (n1/n2)*100;
if(dps(answ)>2)
{
var scoreNew = Math.floor((Math.random()*(n2-1))+1);
chkScore(scoreNew, n2);
}
else
{
return n1;
}
}
function dps(num)
{
var match = (''+num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
if (!match) { return 0; }
return Math.max(
0,
// Number of digits right of decimal point.
(match[1] ? match[1].length : 0)
// Adjust for scientific notation.
- (match[2] ? +match[2] : 0));
}
就像提示 - 你可以隨時打開開發工具(所有瀏覽器中的F12,可能需要在FF中安裝firebug),設置斷點並通過代碼檢查變量值。這有助於很多事情找到發生了什麼 –
似乎無法找到罪魁禍首,但我會做'dps'不同的兩件事。首先你不需要將數字轉換爲字符串,如果你使用exec,var match = /regex/.exec(num)',但我不確定你真的需要那個正則表達式......你可以得到一個用模運算符的數字:'(n%1).toFixed(m)' – elclanrs