Javascript - 将对象键打印到 HTML
Javascript - printing object keys to HTML
所以我试图打印出我的商店对象销售的每个类别的商品到 Javascript 中的 HTML 文件。当我尝试在下面这样做时,它似乎没有打印任何东西,我想知道是否有人可以告诉我我做错了什么。
我要打印出来:
冰淇淋
蛋糕
let dessert = {
store: "Baskin Robbins",
inventory: {
"Ice cream": {
0: {
flavor: "Chocolate",
cost: 15
},
1: {
flavor: "Vanilla",
cost: 10
}
},
"Cake": {
2: {
flavor: "Oreo",
cost: 30
}
}
}
};
function showCategories(){
let userPicked = document.getElementById("list").value;
var div = document.getElementById("div");
if(userPicked == 'dessert'){
var categories = "Inventory";
categories += "<br>";
var options = Object.keys(dessert.inventory);
categories += options;
div.innerHTML = categories;
}
}
还有我的 html 文件:
<html>
<head>
<title>Welcome</title>
</head>
<body>
<div><h1>Welcome</h1></div><br />
<div class="dropdown">
<form>
<select name="list" id="list" accesskey="target">
<option value="none">Pick store</option>
<option value="one">Desserts</option>
</select>
<input type=button value="Select" onclick="showOptions()" onclick = "showCategories()"/>
</form>
</div>
</div>
<div id="div"></div>
<script src="store.js"></script>
</body>
</html>
Object.keys
returns 一个数组。您可以迭代数组以构建新字符串,或者简单地加入它:
categories += options.join('<br>')
编辑:您的代码中存在一些错误,导致无法正常工作:
- 您的按钮上只有一个 onclick 属性:
onclick="showCategories()"
- Desserts 的选项值需要与 showCategories 中的 if 语句匹配。因此,要么将 if 条件更改为
userPicked === 'one'
,要么将 Desserts 选项值更改为 <option value="dessert">Desserts</option>
您可以向下拉选项添加事件侦听器,并使用所选值过滤菜单选项。然后,只需构建您的元素并将它们附加到列表中即可。
const dessert = {
store: "Baskin Robbins",
inventory: {
"Ice cream": {
0: {
flavor: "Chocolate",
cost: 15
},
1: {
flavor: "Vanilla",
cost: 10
}
},
"Cake": {
2: {
flavor: "Oreo",
cost: 30
}
}
}
};
const ddl = document.getElementById('ddl');
ddl.addEventListener('change', e => {
const itemsList = document.getElementById('items');
itemsList.innerHTML = '';
const options = dessert.inventory[e.target.value];
for (const key in options) {
const flavor = options[key].flavor;
const div = document.createElement('div');
div.innerText = flavor;
itemsList.append(div);
}
});
<select id="ddl">
<option>Select...</option>
<option value="Ice cream">Ice Cream</option>
<option value="Cake">Cake</option>
</select>
<div id="items"></div>
所以我试图打印出我的商店对象销售的每个类别的商品到 Javascript 中的 HTML 文件。当我尝试在下面这样做时,它似乎没有打印任何东西,我想知道是否有人可以告诉我我做错了什么。
我要打印出来:
冰淇淋
蛋糕
let dessert = {
store: "Baskin Robbins",
inventory: {
"Ice cream": {
0: {
flavor: "Chocolate",
cost: 15
},
1: {
flavor: "Vanilla",
cost: 10
}
},
"Cake": {
2: {
flavor: "Oreo",
cost: 30
}
}
}
};
function showCategories(){
let userPicked = document.getElementById("list").value;
var div = document.getElementById("div");
if(userPicked == 'dessert'){
var categories = "Inventory";
categories += "<br>";
var options = Object.keys(dessert.inventory);
categories += options;
div.innerHTML = categories;
}
}
还有我的 html 文件:
<html>
<head>
<title>Welcome</title>
</head>
<body>
<div><h1>Welcome</h1></div><br />
<div class="dropdown">
<form>
<select name="list" id="list" accesskey="target">
<option value="none">Pick store</option>
<option value="one">Desserts</option>
</select>
<input type=button value="Select" onclick="showOptions()" onclick = "showCategories()"/>
</form>
</div>
</div>
<div id="div"></div>
<script src="store.js"></script>
</body>
</html>
Object.keys
returns 一个数组。您可以迭代数组以构建新字符串,或者简单地加入它:
categories += options.join('<br>')
编辑:您的代码中存在一些错误,导致无法正常工作:
- 您的按钮上只有一个 onclick 属性:
onclick="showCategories()"
- Desserts 的选项值需要与 showCategories 中的 if 语句匹配。因此,要么将 if 条件更改为
userPicked === 'one'
,要么将 Desserts 选项值更改为<option value="dessert">Desserts</option>
您可以向下拉选项添加事件侦听器,并使用所选值过滤菜单选项。然后,只需构建您的元素并将它们附加到列表中即可。
const dessert = {
store: "Baskin Robbins",
inventory: {
"Ice cream": {
0: {
flavor: "Chocolate",
cost: 15
},
1: {
flavor: "Vanilla",
cost: 10
}
},
"Cake": {
2: {
flavor: "Oreo",
cost: 30
}
}
}
};
const ddl = document.getElementById('ddl');
ddl.addEventListener('change', e => {
const itemsList = document.getElementById('items');
itemsList.innerHTML = '';
const options = dessert.inventory[e.target.value];
for (const key in options) {
const flavor = options[key].flavor;
const div = document.createElement('div');
div.innerText = flavor;
itemsList.append(div);
}
});
<select id="ddl">
<option>Select...</option>
<option value="Ice cream">Ice Cream</option>
<option value="Cake">Cake</option>
</select>
<div id="items"></div>