在列表中追加元素 - javascript

时间:2014-05-25 13:06:28

标签: javascript html-lists

我无法理解为什么我对此代码的定义不明确。实际上,在第一个列表中选择一个值时,我会通过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>

1 个答案:

答案 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);