关注
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>题目</title>
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
<script>
var data = [{
"name": "北京",
"items": [{
"name": "北京",
"items": [{
"name": "东城区"
},
{
"name": "西城区"
}
]
}]
}, {
"name": "浙江",
"items": [{
"name": "杭州",
"items": [{
"name": "上城区"
},
{
"name": "桐庐县"
}
]
},
{
"name": "宁波",
"items": [{
"name": "象山县"
}]
}
]
}]
window.onload = function () {
var div = document.createElement('div');
var option = "";
var val = "";
var select1 = document.createElement("select");
var select2 = document.createElement("select");
var select3 = document.createElement("select");
select1.setAttribute("id", "select1");
select2.setAttribute("id", "select2");
select3.setAttribute("id", "select3");
select1.innerHTML = "<option> --请选择-- </option>";
select2.innerHTML = "<option> --请选择-- </option>";
select3.innerHTML = "<option> --请选择-- </option>";
div.appendChild(select1);
div.appendChild(select2);
div.appendChild(select3);
for (var i = 0; i < data.length; i++) {
option = document.createElement('option');
option.setAttribute("value", data[i].name);
option.innerHTML = data[i].name;
select1.appendChild(option);
}
document.body.appendChild(div);
select1.addEventListener('change', changeSelect1);
select2.addEventListener('change', changeSelect2);
function changeSelect1(e) {
select2.options.length = 1;
select3.options.length = 1;
val = e.target.value;
for (var i = 0; i < data.length; i++) {
if (data[i].name === val) {
for (var j = 0; j < data[i].items.length; j++) {
option = document.createElement('option');
option.setAttribute("value", data[i].items[j].name);
option.innerHTML = data[i].items[j].name;
select2.appendChild(option);
}
break;
}
}
}
function changeSelect2(e) {
select3.options.length = 1;
var val2 = e.target.value;
for (var i = 0; i < data.length; i++) {
if (data[i].name === val) {
for (var j = 0; j < data[i].items.length; j++) {
if (data[i].items[j].name === val2) {
for (var z = 0; z < data[i].items[j].items.length; z++) {
option = document.createElement('option');
option.setAttribute("value", data[i].items[j].items[z].name);
option.innerHTML = data[i].items[j].items[z].name;
select3.appendChild(option);
}
break;
}
}
break;
}
}
}
}
</script>
</head>
<body>
</body>
</html>
这个题目可以用你的方法,但是如果选项多起来了,就有点麻烦了。可以用上面我写的这个方法,用遍历更好,我用的是creatElement的方式添加option,还有就是题目那个JSON有点问题,我这改了一下。
查看原帖
点赞 评论
相关推荐
球球与墩墩:这不是前端常考的对象扁平化吗,面试官像是前端出来的
const flattern = (obj) => {
const res = {};
const dfs = (curr, path) => {
if(typeof curr === 'object' && curr !== null) {
const isArray = Array.isArray(curr);
for(let key in curr) {
const newPath = path ? isArray ? `${path}[${key}]` : `${path}.${key}` : key;
dfs(curr[key], newPath);
}
} else {
res[path] = curr
}
}
dfs(obj);
return res;
}
查看3道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 那些年,我收到的‘奇葩’回复 #
22468次浏览 157人参与
# 实习需要主动找活干吗? #
54857次浏览 295人参与
# 百度秋招 #
50200次浏览 383人参与
# OC/开奖 #
190234次浏览 1322人参与
# 你后悔选择现在的专业吗 #
101598次浏览 697人参与
# 职场中那些令人叹为观止的八卦 #
30039次浏览 242人参与
# 小红书开奖了 #
31974次浏览 156人参与
# 实习教会我的事 #
41782次浏览 342人参与
# 蚂蚁求职进展汇总 #
131279次浏览 1203人参与
# 秋招你经历过哪些无语的事 #
21780次浏览 238人参与
# 2022毕业即失业取暖地 #
120069次浏览 709人参与
# 校招薪资来揭秘 #
82099次浏览 517人参与
# 听到哪句话代表面试稳了OR挂了? #
105620次浏览 457人参与
# 秋招吐槽大会 #
90724次浏览 787人参与
# 材料人,你最希望上岸的是? #
11317次浏览 56人参与
# 你今年的保底offer是哪家 #
143546次浏览 620人参与
# 牛客十周岁生日快乐 #
184530次浏览 1825人参与
# 扒一扒那些奇葩实习经历 #
131763次浏览 1124人参与
# AI时代,哪些岗位最容易被淘汰 #
11764次浏览 99人参与
# 你找工作想离家近 or 离家远? #
16607次浏览 244人参与
# 你秋招最后悔的选择 #
17930次浏览 132人参与
# 我的职场社死时刻 #
22349次浏览 169人参与