我正在开发一个表单,根据用户所处的状态不同地处理输入信息。在我的网页上,我有一个下拉列表中的状态列表:
<div class="top-row" title="Select the proper state from the list.">
<select name="state-list" class="state-list" id="stateList" >
<option value=30>Select State</option>
<option value=0>AL</option>
<option value=1>AR</option>
<option value=2>CA</option>
<option value=3>CT</option>
<option value=4>DE</option>
<option value=5>DC</option>
<option value=6>GA</option>
</select>
</div>
在我的javascript文件中,我创建了一个名为states的数组,并将States作为数组放置:
var state = { AL: [false, true, true, 0], AZ: [false, false, false, 0],
AR: [false, true, true, 0], CA: [false, false, false, 0],
CT: [false, true, true, 0], DE: [false, true, true, 0],
DC: [false, true, true, 0], GA: [false, true, true, 0]};
我遇到的问题是找到数组值。我做了很多搜索,但我还没找到解决方案。
findState = document.getElementById('stateList').value;
console.log(state.findState[0]);
他们都返回 undefined ,但是&#39; findState&#39;有价值。如何访问状态数组中特定State状态数组的值?
答案 0 :(得分:4)
您的表达式正在尝试访问findState
对象上的state
属性,并且没有名为findState
的属性。而是使用括号表示法:
console.log(state[findState][0]);
此外,请勿忘记执行正确的空值/未定义检查,以便考虑无法找到值的可能性(例如,如果用户重新选择下拉列表中的第一个选项)。
答案 1 :(得分:1)
你没有创建一个名为state([]
)的状态,你创建了一个名为state的对象({}
)。
其中,每个“州”缩写都是关键&amp; true / false选项的数组是值。
对象不保证其内容的顺序,因此您无法通过数字索引搜索它们。
您可以返回state
实际上是一个对象数组,或者返工如何访问这些值。
findState
未返回预期值。首先需要检查所选索引,然后获取value
属性(数值attr)或文本。
var stateList = document.getElementById('stateList'); //the whole list in the DOM
var selectedState = stateList.options[stateList.selectedIndex]; //whichever one is selected
var numericValue = selectedState.value //value='#'
var textAbbrev = selectedState.text //"AR" , "AZ", etc
如果对象使用缩写作为“键”,则需要.text
var optionsArray = state.textAbbrev //should give you the entire array for selected state
console.log(optionsArray[0]); //should show the 1st true/false value in the selected state's array.
此外,您的HTML缺少“AZ”。