Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于单独下拉列表中选定索引的Javascript循环_Javascript_Jquery - Fatal编程技术网

基于单独下拉列表中选定索引的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/>");
}