[英]How can I add some randomness to populating this list?
我正在嘗試在測驗中填充答案列表。 正確的答案始終是數據對象中的a0
。 我如何才能做到,所以第一個答案並不總是正確的? 提示將不勝感激!
JS:
data = [
{"q":"How much?", "a0":"20%", "a1": "1%", "a2": "10%", "a3": "5%"},
{"q":"What", "a0":"Ball", "a1": "Stone", "a2": "Bierd", "a3": "Carl"},
{"q":"When?", "a0":"1999", "a1": "2000", "a2": "2001", "a3": "2002"}
];
function addData() {
var ids =['a','b','c','d'];
for (var j=0; j < ids.length; j++) {
//Populate answers into list
document.getElementById(ids[j]).innerHTML = data[q]['a'+j];
//Add class 'correct' to the li with the right answer (always a0 in the data object)
if (j==0) {
document.getElementById(ids[j]).setAttribute('class', 'correct');
}
};
}
HTML:
<ul class="answers_quiz">
<li id="a"></li>
<li id="b"></li>
<li id="c"></li>
<li id="d"></li>
</ul>
只需使用隨機數對數組進行排序:
var ids =['a','b','c','d'];
ids.sort(function(x, y) {
return parseInt(Math.random() * ids.length);
});
for (var j=0; j < ids.length; j++) {
//.....
}
現場測試用例 。 (隨機排序)
您可以生成一個隨機數並將其用作數組的位置,當然,請始終驗證其長度和獲得的數字。
您可以使用以下方式生成隨機數:
var randomnumber = Math.random();
您可以對數組進行隨機排序,也可以按排序順序進行排序。
您的數組是字符串數組,您的答案按字母順序排列並不重要,因此您可以嘗試按字母順序對其進行排序。
下面的示例是對字符串數組進行排序。
//Sort alphabetically and ascending:
var myarray=["Bob", "Bully", "Amy"]
myarray.sort() //Array now becomes ["Amy", "Bob", "Bully"]
//Sort alphabetically and descending:
var myarray=["Bob", "Bully", "Amy"]
myarray.sort()
myarray.reverse() //Array now becomes ["Bully", "Bob", "Amy"]
請參閱http://www.javascriptkit.com/javatutors/arraysort.shtml
現在,如果要按索引對其進行排序,則可以使用以下命令。
function randomSort(a,b) {
return( parseInt( Math.random()*10 ) %2 );
}
var arlene = new Array( 1, 2, 3, 4, 5 );
alert( arlene.sort(randomSort).toString() );
請參閱http://freewebdesigntutorials.com/javaScriptTutorials/jsArrayObject/randomizeArrayElements.htm
這樣可以保持答案的順序,只是先更改哪個。
在for循環之前做一個隨機整數: var offset=Math.floor(Math.random()*ids.length)
,然后循環中的第一件事就是做var idx='a'+((j+offset)%ids.length)
。 代替data[q]['a'+j]
使用data[q][idx]
,並設置類以在idx=="a0"
而不是j==0
時更正。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.