基于单独下拉列表中选定索引的Javascript循环
嗨,我有一个选择列表,如下所示:-基于单独下拉列表中选定索引的Javascript循环,javascript,jquery,Javascript,Jquery,嗨,我有一个选择列表,如下所示:- <select id="countryData"> <option>England</option> <option>France</option> <option>Germany</option> </select> 我需要一种方式,以便根据下拉框中选择的内容显示该国家/地
<select id="countryData">
<option>England</option>
<option>France</option>
<option>Germany</option>
</select>
我需要一种方式,以便根据下拉框中选择的内容显示该国家/地区的国家/地区和值列表。e、 g.在下拉列表中选择英格兰:-
ENGLAND
Spain 45
Denmark 50
不幸的是,我的javascript技能非常糟糕,到目前为止,我一直使用以下方法从下拉列表中获取所选值:-
$("#countryData option:selected").text()
但是,它实际上是以“England”填充的,例如,作为字符串,因此我不确定如何在我的for循环中引用数组“England”,这类似于:-
for (var name in $("#countryData option:selected").text()) {
document.write($("#countryData option:selected").text()[name]);
}
我可能只是走错了方向,如果有人能给我指出正确的方向那就太好了
非常感谢 不应使用document.write加载页面后,它将覆盖页面内容。使用jQuery的方法向DOM追加元素
.text返回字符串,而不是对象,因此不能将for in与它一起使用
如果要使用下拉列表中的国家/地区作为键来查找某些内容,则需要将其作为对象中的属性名称:
var countries = {
England: {
Spain: 45,
Denmark: 50
}
France: {
Spain: 30,
Portugal: 40
}
...
}
然后您可以执行以下操作:
var country = $("#countryData option:selected").text());
$.each(countries[country], function(name, value) {
$("#resultList").append("<li>" + name + " " + value + "</li>");
});
您可以创建一个将保留国家的对象,并可以添加可访问的属性,如国家['England'] 此属性可以是一个数组,也可以有其他对象,您可以像访问以下国家['England']['Spain']一样访问它们 注意:我做了一个函数显示,显示带有的国家,这个逻辑可以用表格或其他东西来更改 var国家={ 英格兰:[], }; 国家[“英格兰”][“西班牙”]=45; 国家[“英格兰”][“丹麦”]=50; 国家[‘法国’]=[]; 国家[“法国”][“丹麦”]=130; var$display=$'display'; var$ddlcorry=$countryData; $ddlCountry.changefunction{ var selected=$countryData选项:selected.text; 选择显示; }; 功能显示已选定{ var selectedCountries=国家[所选]; $display.empty; $display.附加“”+所选+””; 选定国家/地区中的forvar国家/地区 { var值=“”+国家+“+选定国家[国家]+””; $display.appendvalue; } } 英格兰 法国 德国
您正在寻找以下内容:
var England = {};
England['Spain'] = 45;
England['Denmark'] = 50;
var selectedText = $("#countryData option:selected").text();
var result = eval(selectedText);
for (var key in result) {
document.write(result[key] + "<br/>");
}
然而,由于许多原因,这是一些非常糟糕的代码和平。例如,在这里使用eval不是一个好主意
相反,您应该使用如下内容:
var options = {
England : {
Spain : 45,
Denmark : 50
},
France : {
//...
},
Germany : {
//...
}
};
var selectedText = $("#countryData option:selected").text();
var selectedOptData = options[selectedText];
for (var key in selectedOptData) {
document.write(selectedOptData[key] + "<br/>");
}
这段代码要好得多。还考虑其他人的意见,甚至进一步改进代码。但基本上,我想这就是你问题的答案
此外,请考虑使用选项标签的value属性,参见一个简单的例子。
您的变量是一个对象,但将其声明为英国是一个错误,您可以将其声明为国家,这样您就可以将属性设置为CurrnZixZip代码等。定义一个变量,如var Vyvar=窗口[$StAMDATIONSATION:选择:文本]。,然后使用变量进行操作谢谢!正是我需要的!谢谢你的帮助!将来会很方便,因为我正计划为子列表中的每个国家分配一个自定义URL:谢谢你的建议,我将研究价值属性var options = {
England : {
Spain : 45,
Denmark : 50
},
France : {
//...
},
Germany : {
//...
}
};
var selectedText = $("#countryData option:selected").text();
var selectedOptData = options[selectedText];
for (var key in selectedOptData) {
document.write(selectedOptData[key] + "<br/>");
}