如何使用JQuery从select元素中获得N个选项
我们的任务是从选择元素中获得随机的N个选项。以下是一些方法。
步骤 1:
- 首先在数组中获得所有选项元素的文本。
- 产生一个随机的数组索引,并获得该索引的选项。
- 将最后一个元素与当前的随机索引交换,并将数组的长度减去1。
- 重复这个过程,直到获得n个选项。
例子1:这个例子使用了上面讨论的方法。
<!DOCTYPE HTML>
<html>
<head>
<title>
How to get N options from the <select> element.
</title>
<script src=
"https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">
</script>
</head>
<body style="text-align:center;">
<h1 style="color: green">
GeeksForGeeks
</h1>
<p id="GFG_UP"
style=
"font-size: 15px; font-weight: bold;">
</p>
<select id="elmt">
<option value="v1"> YEW </option>
<option value="v4"> ZAC </option>
<option value="v2"> ABC </option>
<option value="v3"> DFG </option>
<option value="v5"> MNO </option>
<option value="v9"> STU </option>
</select>
<br>
<br>
<button onclick="gfg_Run()">
Click Here
</button>
<p id="GFG_DOWN"
style="color:green;
font-size: 30px;
font-weight: bold;">
</p>
<script>
var el_up = document.getElementById("GFG_UP");
var el_down = document.getElementById("GFG_DOWN");
el_up.innerHTML =
"Click on the button to get the random n "+
"options from the < select > element.";
var arr = [];
("#elmt").find('option').each(function() {
arr.push((this).text());
});
function getElmts(arr, n) {
var res = new Array(n),
len = arr.length,
t = new Array(len);
while (n--) {
var x = Math.floor(Math.random() * len);
res[n] = arr[x in t ? t[x] : x];
t[x] = --len in t ? t[len] : len;
}
return res;
}
function gfg_Run() {
el_down.innerHTML = getElmts(arr, 5);
}
</script>
</body>
</html>
输出:
- 在点击按钮之前。

- 点击该按钮后。

步骤 2:
- 通过生成随机数字来定义选项的优先级,对选项进行排序。
- 使用.slice()方法来获得前N个选项。
例子2:这个例子使用了上面讨论的方法。
<!DOCTYPE HTML>
<html>
<head>
<title>
How to get N options from the <select> element.
</title>
<script src=
"https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">
</script>
</head>
<body style="text-align:center;">
<h1 style="color: green">
GeeksForGeeks
</h1>
<p id="GFG_UP"
style="font-size: 15px;
font-weight: bold;">
</p>
<select id="elmt">
<option value="v1"> YEW </option>
<option value="v4"> ZAC </option>
<option value="v2"> ABC </option>
<option value="v3"> DFG </option>
<option value="v5"> MNO </option>
<option value="v9"> STU </option>
</select>
<br>
<br>
<button onclick="gfg_Run()">
Click Here
</button>
<p style="color:green;">
</p>
<script>
var el_up = document.getElementById("GFG_UP");
var el_down = document.getElementById("GFG_DOWN");
el_up.innerHTML =
"Click on the button to get the random n "+
"options from the < select > element.";
var arr = [];
("#elmt").find('option').each(function() {
arr.push((this).text());
});
function gfg_Run() {
var n = 5;
const shuffle = arr.sort(() => 0.5 - Math.random());
let ans = shuffle.slice(0, n);
el_down.innerHTML = ans;
}
</script>
</body>
</html>
输出:
- 在点击按钮之前。

- 点击该按钮后。

极客教程