HTML - 如何连接两个下拉菜单并使第二个下拉菜单可点击
HTML - How to connect two dropdown and make the second one clickable
我使用以下代码连接了两个下拉菜单:
<script>
function populate(s1,s2){
var s1 = document.getElementById(s1);
var s2 = document.getElementById(s2);
s2.innerHTML = "";
if(s1.value == "Chevy"){
var optionArray = ["|","camaro|Camaro","corvette|Corvette","impala|Impala"];
} else if(s1.value == "Dodge"){
var optionArray = ["|","avenger|Avenger","challenger|Challenger","charger|Charger"];
} else if(s1.value == "Ford"){
var optionArray = ["|","mustang|Mustang","shelby|Shelby"];
}
for(var option in optionArray){
var pair = optionArray[option].split("|");
var newOption = document.createElement("option");
newOption.value = pair[0];
newOption.innerHTML = pair[1];
s2.options.add(newOption);
}
}
</script>
和
<select id="slct1" name="slct1" onchange="populate(this.id,'slct2')">
<option value=""></option>
<option value="Chevy">Chevy</option>
<option value="Dodge">Dodge</option>
<option value="Ford">Ford</option>
</select>
Choose Car Model:
<select id="slct2" name="slct2"></select>
现在我想让第二个下拉菜单(型号)中的选项可点击。以另一个站点为例:每个模型的页面。所有发生在同一个页面中的一个
我正在使用 HTML、CSS、Java 脚本 ...
您正在使用脚本中的填充函数向第二个下拉列表添加选项。
是的,它将是可点击的,因为它是一个下拉 select 选项。如果你想在第二次 drpdown 单击时触发功能,那么你可以像第一次添加一样添加 onchange。
据我了解,您看起来像这样:
<select id="slct1" name="slct1">
<option value=""></option>
<option value="Chevy">Chevy</option>
<option value="Dodge">Dodge</option>
<option value="Ford">Ford</option>
</select><br>
Choose Car Model:
<select id="slct2" name="slct2"></select>
我会重新考虑 Javascript 部分,我会使用 jquery 来访问 DOM:
// you can update this object to be as big as you want
var OPTION_ARRAY = {
chevy: {
camaro: {
value: 'camaro',
key: 'Camaro',
},
corvette: {
value: 'corvette',
key: 'Corvette',
},
},
dodge: {
avenger: {
value: 'avenger',
key: 'Avenger',
}
},
};
function cleanSelect2() {
$('#slct2').find('option').remove().end();
}
function fillSelect2(value) {
var values = OPTION_ARRAY[value.toLowerCase()];
var $mySelect = $('#slct2');
for (var element in values) {
if (values.hasOwnProperty(element)) {
$mySelect
.append($('<option></option>')
.attr('value', values[element].value)
.text(values[element].key));
}
}
}
$('#slct1').change(function() {
var $this = $(this);
var value = $this.val();
cleanSelect2();
fillSelect2(value);
});
我使用以下代码连接了两个下拉菜单:
<script>
function populate(s1,s2){
var s1 = document.getElementById(s1);
var s2 = document.getElementById(s2);
s2.innerHTML = "";
if(s1.value == "Chevy"){
var optionArray = ["|","camaro|Camaro","corvette|Corvette","impala|Impala"];
} else if(s1.value == "Dodge"){
var optionArray = ["|","avenger|Avenger","challenger|Challenger","charger|Charger"];
} else if(s1.value == "Ford"){
var optionArray = ["|","mustang|Mustang","shelby|Shelby"];
}
for(var option in optionArray){
var pair = optionArray[option].split("|");
var newOption = document.createElement("option");
newOption.value = pair[0];
newOption.innerHTML = pair[1];
s2.options.add(newOption);
}
}
</script>
和
<select id="slct1" name="slct1" onchange="populate(this.id,'slct2')">
<option value=""></option>
<option value="Chevy">Chevy</option>
<option value="Dodge">Dodge</option>
<option value="Ford">Ford</option>
</select>
Choose Car Model:
<select id="slct2" name="slct2"></select>
现在我想让第二个下拉菜单(型号)中的选项可点击。以另一个站点为例:每个模型的页面。所有发生在同一个页面中的一个
我正在使用 HTML、CSS、Java 脚本 ...
您正在使用脚本中的填充函数向第二个下拉列表添加选项。 是的,它将是可点击的,因为它是一个下拉 select 选项。如果你想在第二次 drpdown 单击时触发功能,那么你可以像第一次添加一样添加 onchange。
据我了解,您看起来像这样:
<select id="slct1" name="slct1">
<option value=""></option>
<option value="Chevy">Chevy</option>
<option value="Dodge">Dodge</option>
<option value="Ford">Ford</option>
</select><br>
Choose Car Model:
<select id="slct2" name="slct2"></select>
我会重新考虑 Javascript 部分,我会使用 jquery 来访问 DOM:
// you can update this object to be as big as you want
var OPTION_ARRAY = {
chevy: {
camaro: {
value: 'camaro',
key: 'Camaro',
},
corvette: {
value: 'corvette',
key: 'Corvette',
},
},
dodge: {
avenger: {
value: 'avenger',
key: 'Avenger',
}
},
};
function cleanSelect2() {
$('#slct2').find('option').remove().end();
}
function fillSelect2(value) {
var values = OPTION_ARRAY[value.toLowerCase()];
var $mySelect = $('#slct2');
for (var element in values) {
if (values.hasOwnProperty(element)) {
$mySelect
.append($('<option></option>')
.attr('value', values[element].value)
.text(values[element].key));
}
}
}
$('#slct1').change(function() {
var $this = $(this);
var value = $this.val();
cleanSelect2();
fillSelect2(value);
});