我正在使用递归函数,并且我调用了名为"optionVal“的函数参数中的JSON值,以及显示我的函数调用次数的调用计数?现在我面临的问题是,当方括号浏览器中的调用计数显示错误“无法读取未定义的属性'name‘”时,我使用类似于0 1的数字,而不是计算函数正常工作。为什么会发生这种情况,任何人都可以解释。
var defaultAdd = document.getElementById('dropdown-select');
var optionVal =
[
{
name: "Animals",
child: [
{
name: "Dog",
child: [
{
name: "Huskey"
},
{
name: "German Shephard"
}
]
},
{
name: "Fish",
child: [
{
name: "Whale"
},
{
name: "Shark"
}
]
}
]
},
{
name: "Metal",
child: [
{
name: "Hard",
child: [
{
name: "Gold"
},
{
name: "Iron"
}
]
},
{
name: "Soft",
child: [
{
name: "Alluminium"
},
{
name: "Mercury"
}
]
}
]
},
{
name: "Cloths",
child: [
{
name: "Resin",
},
{
name: "Cotton",
},
{
name: "Linen",
},
{
name: "Denim",
}
]
},
{
name: "Lead",
}
]
var array = ['<ul>'];
navbar(optionVal, 0);
function navbar(optionVal, count) {
console.log(optionVal[count].name)
array.push('<li>' + optionVal[count].name + '</li>');
if (count >= optionVal.length) {
return false;
} else {
navbar(optionVal, count + 1)
}
}
defaultAdd.innerHTML = array.join("");发布于 2020-04-13 21:35:52
您的错误是,您超出了数组的限制(第87行"f (count >= optionVal.length - 1)“。参见下面的代码:
var defaultAdd = document.getElementById('dropdown-select');
var optionVal =
[
{
name: "Animals",
child: [
{
name: "Dog",
child: [
{
name: "Huskey"
},
{
name: "German Shephard"
}
]
},
{
name: "Fish",
child: [
{
name: "Whale"
},
{
name: "Shark"
}
]
}
]
},
{
name: "Metal",
child: [
{
name: "Hard",
child: [
{
name: "Gold"
},
{
name: "Iron"
}
]
},
{
name: "Soft",
child: [
{
name: "Alluminium"
},
{
name: "Mercury"
}
]
}
]
},
{
name: "Cloths",
child: [
{
name: "Resin",
},
{
name: "Cotton",
},
{
name: "Linen",
},
{
name: "Denim",
}
]
},
{
name: "Lead",
}
]
var array = ['<ul>'];
navbar(optionVal, 0);
function navbar(optionVal, count) {
console.log(optionVal[count].name)
array.push('<li>' + optionVal[count].name + '</li>');
if (count >= optionVal.length - 1) { // Your error was here! :)
return false;
} else {
navbar(optionVal, count + 1)
}
// You can refactor for better readability
// if (count < optionVal.length - 1) { // Max index 4 - 1 = 3
// navbar(optionVal, count + 1)
// } else {
// return false;
// }
}
defaultAdd.innerHTML = array.join("");<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {background: white}
</style>
</head>
<body>
<ul id="dropdown-select">
</ul>
</body>
<script src="index.js"></script>
</html>
https://stackoverflow.com/questions/61188704
复制相似问题