gpt4 book ai didi

javascript - 需要用 'value' of an HTML select 'option' as array name

转载 作者:行者123 更新时间:2023-11-30 08:51:09 24 4
gpt4 key购买 nike

我有几个 JavaScript 数组:

 var someMotionToys = ["cars", "bikes", "surfboards", "skis"];
var immobileToys = ["xbox", "guitar", "paintbrush", "laptop", "crossword puzzles"];
var rareToys = ["ironmaiden", "pogostick", "lawndarts"];

我有一个 HTML“选择”标签,如下所示:

     <select id="toys" onchange="handleToysChoice(this)">
<option value="someMotionToys">toys in motion</option>
<option value="immobileToys">toys for inside</option>
<option value="rareToys">antique toys</option>
</select>

我在这里处理 onchange JavaScript 函数:

     function handleToysChoice(theToysSelector)
{
var theToySelection = theToysSelector.value;

// AT THIS POINT -- assume the user selected 'toys in motion'
// so 'theToySelection' here is "someMotionToys" -- that is *also*
// the name of my array -- but the following tells me it's not
// referencing the array:
alert("The number of elements in the array " + theToySelection
+ " is: " + theToySelection.length);
}

我得到的“长度”值是单词“someMotionToys”的长度,尽管它是我的数组的名称,但它也是 html“选择”框中的“值”的名称。换句话说,我看到的“长度”值为 14(“someMotionToys”中的字母数),但我需要“长度”为 4,即“someMotionToys”数组中的元素数。我需要将 HTML 选择框中的这个“值”“连接”到我的数组。我想将我的数组名称存储在选择框中的“值”字段中,然后在 onchange 处理程序中轻松提取“值”并快速引用正确的数组。

如何“强制”从 HTML“选择”中的值中获取的文本字符串,以便将其映射到我的数组名称?

我需要在我的网页上的几个“选择”中存储数组名称——我的计划是将数组名称存储在“选择”框中每个选项的“值”中。

我怎样才能使这项工作?顺便说一句,我没有计划使用 jQuery。

最佳答案

最好的方法是将这些数组属性设置为一个对象:

var arrays = {
someMotionToys: ["cars", "bikes", "surfboards", "skis"],
immobileToys: ["xbox", "guitar", "paintbrush", "laptop", "crossword puzzles"],
rareToys: ["ironmaiden", "pogostick", "lawndarts"]
};

然后使用

var theArray = arrays[theToySelection];

...获取数组。在 JavaScript 中,您可以使用点符号和文字 (foo.bar) 或使用方括号符号和字符串 (foo["bar"]) 访问对象属性.在后一种情况下,字符串可以是任何表达式的结果(例如,foo["b"+ "a"+ "r"] 有效),包括变量引用。

如果这些数组是在全局范围内声明的,它们已经是一个对象的属性——全局对象,您可以使用 window 引用它:

var theArray = window[theToySelection];

但如果它们是全局变量,我建议进行重构,使它们不是全局变量。 :-)

关于javascript - 需要用 'value' of an HTML select 'option' as array name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17769934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com