我有以下HTML
:
<select name="region-select" id="regions-select" class="form-control">
<option selected=""> </option>
<option value="23">Name1</option>
<option value="24">Name2</option>
<option value="25">Name3</option>
<option value="28">Name4</option>
<option value="33">Name5</option>
<option value="35">Name6</option>
<option value="213">Name7</option>
<option value="9999">Name8</option>
<!-- 200 elements... -->
</select>
我有以下JavaScript (jQuery)
:
var regions = [];
$("#regions-select > option").each(function() {
regions.push({
key: this.value,
value: this.text
});
});
console.log(regions["213"]); // there is no such emelement
console.log(regions["9999"]); // there is no such emelement
几乎所有元素都存在于数组中。但有些人没有。例如,regions with key == 213 and 9999
。
答案 0 :(得分:3)
你需要一个关联数组,你的数组的索引不是9999,除非它有超过9998个元素:
var regions = {};
$("#regions-select > option").each(function() {
regions[this.value] = this.text;
});
console.log(regions["213"]); // Name7
console.log(regions["9999"]); // Name8
答案 1 :(得分:1)
这里的一切看起来都很正确。因为regions是一个数组,所以它由索引访问,而不是由键访问。但是,你可以实现你似乎试图用对象做的事情。
var regions = {};
$("#regions-select > option").each(function() {
regions[this.value] = this.text;
});
console.log(regions["213"]);
console.log(regions["9999"]);
答案 2 :(得分:0)
试试吧
var regions = [];
$("#regions-select > option").each(function(e) {
regions.push({
key: $(e).val(),
value: $(e).html()
});
});