我无法理解为什么我对此代码的定义不明确。实际上,在第一个列表中选择一个值时,我会通过for循环来打印与所选用户的值相对应的第二个列表。 问题是该项目没有挂起,因为它告诉我它是未定义的,而不是这样。
<html>
<body>
<ol id="ol"></ol>
<ul id="ol2"></ul>
<script>
var ol = document.getElementById('ol');
var opn = document.getElementById('ol2');
var Assen = document.createElement('li');
var opts = {
'Assen' : ['1.Dovizioso','2.Dani Pedrosa','3.Valentino Rossi','4.Jorge Lorenzo','5.Stefan Bradl','6.Aleix Espargaro','7.Bradley Smith','8.Pol Espargaro','9.Andrea Iannone','10.Nicky Haiden'],
};
window.onload = function crea()
{
Assen.innerHTML = "Assen";
Assen.setAttribute("onclick","Ch('Assen')");
ol.appendChild(Assen);
}
function Ch(x)
{
console.log("Funzione attiva!");
var selectedValue = x;
for(i = 0; i < opts[selectedValue].length; i++)
{
var opt = document.createElement('li');
console.log("opts[selectedValue][i]: " + opts[selectedValue][i]);
opt = opts[selectedValue][i];
console.log("opt.value: " + opt);
document.body.opn.appendChild(opt);
}
}
</script>
</body>
</html>
答案 0 :(得分:1)
您的代码存在两个问题。您将opt
的值定义为元素:
var opt = document.createElement('li');
但稍后你会覆盖它:
opt = opts[selectedValue][i];
您应该使用类似
的内容opt.innnerHTML = opts[selectedValue][i];
第二个问题是document.body.opn
未定义,因为您将变量创建为var opn
。所以改变
document.body.opn.appendChild(opt);
到
opn.appendChild(opt);