当有多个数组时,如何在javascript中选择“特定数组”值
How to select Particular Array value in javascript when there is multiple arrays?
这里有代码,我在其中生成随机数并选择特定的下拉列表。如何选择所选列表的特定数组。
function myfunction(){
var selectedList=document.getElementById("selectedId").value;
var result=generateRandomNumber();
allArrays(result,selectedList);
}
function allArrays(result,selectedList){
var fruitsArray=["apple","banana","mango","jack","kiwi"];
var sportsArray=["cricket","baseball","volleyball","football","tennis"];
var animalsArray=["monkey","donkey","dog","cat","rat"];
var playersArray=["sachin","watson","gale","akram","narine"];
}
function generateRandomNumber(){
var numberResult = Math.floor(Math.random() * 4) + 1;
return numberResult ;
}
HTML
<select id="selectedId">
<option value="fruits" onclick="myfunction(this.value)">fruits</option>
<option value="sports" onclick="myfunction(this.value)">sports</option>
<option value="animals" onclick="myfunction(this.value)">animals</option>
<option value="players" onclick="myfunction(this.value)">players</option>
</select>
例如:如果我在警报中从下拉菜单中选择了水果选项,我会得到水果,那么我会生成随机数。根据生成的随机数,我如何从属性(选定的列表数组)中获得相应的值,而其他数组则不必初始化?
这是一个解决方案:
HTML:
<select id="selectedId">
<option value="fruits" onclick="myfunction(this.value)">fruits</option>
<option value="sports" onclick="myfunction(this.value)">sports</option>
<option value="animals" onclick="myfunction(this.value)">animals</option>
<option value="players" onclick="myfunction(this.value)">players</option>
</select>
JavaScript:
function myfunction(res) {
var array = allArrays(res);
var result = generateRandomNumber(array.length);
var randomItem = array[result];
console.log(randomItem);
}
function allArrays(result) {
var arrays = {
fruitsArray: ["apple", "banana", "mango", "jack", "kiwi"],
sportsArray: ["cricket", "baseball", "volleyball", "football", "tennis"],
animalsArray: ["monkey", "donkey", "dog", "cat", "rat"],
playersArray: ["sachin", "watson", "gale", "akram", "narine"]
}
return arrays[result + 'Array'];
}
function generateRandomNumber(length) {
var numberResult = Math.floor(Math.random() * length);
return numberResult;
}
在这里演示
但是您不应该在HTML:中使用onclick
或onchange
属性
HTML:
<select id="selectedId">
<option value="">Choose</option>
<option value="fruits">fruits</option>
<option value="sports">sports</option>
<option value="animals">animals</option>
<option value="players">players</option>
</select>
JavaScript:
function addEvent(elt, event, func) {
if (elt.addEventListener) // W3C DOM
elt.addEventListener(event,func,false);
else if (elt.attachEvent) { // IE DOM
elt.attachEvent("on"+event, func);
}
}
function myfunction(e) {
var target = e.target || e.srcElement;
var value = target.value;
if (!value)
return;
var array = allArrays(target.value);
var result = generateRandomNumber(array.length);
var randomItem = array[result];
console.log(randomItem);
}
function allArrays(result) {
var arrays = {
fruitsArray: ["apple", "banana", "mango", "jack", "kiwi"],
sportsArray: ["cricket", "baseball", "volleyball", "football", "tennis"],
animalsArray: ["monkey", "donkey", "dog", "cat", "rat"],
playersArray: ["sachin", "watson", "gale", "akram", "narine"]
}
return arrays[result + 'Array'];
}
function generateRandomNumber(length) {
var numberResult = Math.floor(Math.random() * length);
return numberResult;
}
addEvent(window, 'load', function(e) {
var selectId = document.getElementById('selectedId');
addEvent(selectId, 'change', myfunction);
});
Deom here
首先,将定义移出函数,否则它们根本无法访问。
既然它们是全球性的,你可以访问它们,比如:
window[selectedList + 'array']
HTML
首先从option
的内联HTML中删除onclick
。
<select id="selectedId">
<option value="fruits">fruits</option>
<option value="sports">sports</option>
<option value="animals">animals</option>
<option value="players">players</option>
</select>
JS
然后使用JavaScipt将onclick
事件附加到您的option
s。我们使用[].slice.call
将节点列表转换为数组,这样我们就可以在上面使用forEach
。
var options = document.querySelectorAll('option');
[].slice.call(options).forEach(function (option) {
option.onclick = myfunction;
});
包含数组的最简洁的方法是将它们保存在一个对象中:
var arrays = {
fruits: ["apple","banana","mango","jack","kiwi"],
sports: ["cricket","baseball","volleyball","football","tennis"],
animals: ["monkey","donkey","dog","cat","rat"],
players: ["sachin","watson","gale","akram","narine"]
}
对于select
更改时运行的功能:
function myfunction() {
// grab the select element
var select = document.getElementById("selectedId");
// Get the value of the selected index, say "fruit"
var value = select.options[select.selectedIndex].value;
// and grab that array from the object of arrays
var array = arrays[value];
alert(array);
// Then pluck a random element from the chosen array
var result = array[generateRandomNumber()];
alert(result);
}
function generateRandomNumber(){
var numberResult = Math.floor(Math.random() * 4) + 1;
return numberResult ;
}
DEMO
相关文章:
- Jquery 读取编号组中选择下拉列表的数组
- Javascript:从数组中的对象中选择属性
- Javascript没有从数组中选择背景颜色
- 如何从数组中选择特定标记
- 使用JavaScript或jQuery检查单选按钮选择是否与数组中的项目匹配
- jquery从多维数组中进行动态相关选择
- 如何在javascript中使用click函数选择数组元素
- 构建HTML选择字段并使用JavaScript数组选择选项
- 将增量计数器连接到 JSON 响应循环中的数组选择器的末尾
- 使用 jQuery 使用 id 数组选择元素
- Jquery循环数组选择器与自定义元素ID的
- 转换后的 JSON 数组选择
- 对象数组-选择数组子集,其中对象属性为值数组
- knockoutjsforeach数组选择项值绑定
- 数组选择中的Javascript对象
- 按属性值的数组选择器函数
- 警告JS数组选择
- Javascript 和 HTML mix(数组选择)
- 作为jquery变量的值数组选择器
- 统一更新数组选择值