gpt4 book ai didi

javascript - 访问 json 数组元素的动态方式

转载 作者:行者123 更新时间:2023-11-30 12:07:53 24 4
gpt4 key购买 nike

所以我有json数组

data = '[{"beatles": [
{"name":"Paul McCartney","value": "http://www.paulmccartney.com"},
{"name": "John Lennon","value": "http://www.johnlennon.it"},
{"name":"George Harrison","value": "http://www.georgeharrison.com"},
{"name": "Ringo Starr","value": "http://www.ringostarr.com"}],
"stones": [
{"name": "Mick Jagger","value": "http://www.mickjagger.com"},
{"name": "Keith Richards","value": "http://www.keithrichards.com"}]'

我有两个下拉列表

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="rockbands.json"></script>
<script src="script.js"></script>
</head>
<body onload="getBands()">
<select id="bands" onchange="getNames(this.value)"></select>
<select id="names" ></select>

</body>
</html>

所以我用这个 JS 代码加载 ID 为“bands”的下拉列表

function getBands() {
var root = JSON.parse(data)
var bandsBox = document.getElementById("bands")
for(i in root[0]) {
var option = document.createElement("option")
option.text = i
bandsBox.appendChild(option)
}
}

我想做的是用 ID“names”填充另一个下拉列表使用基于第一个下拉列表中的选择的数组元素“名称”,例如,如果我选择披头士乐队,它将加载披头士乐队中的所有名称

我可以用 root[0].beatles[1].name 之类的东西访问它,但我想要一种动态的方式来访问它们,谢谢

最佳答案

在你的 getNames() 函数中做类似的事情

function getNames(nameOfBand) {
var root = JSON.parse(data);
var namesBox = document.getElementById("names");
var listOfNames = root[0][nameOfBand]
for( j = 0; j < listOfNames.length; j++) {
var option = document.createElement("option");
option.text = listOfNames[j]["name"];
namesBox.appendChild(option)
}
}

关于javascript - 访问 json 数组元素的动态方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34656701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com