this.fillSelectBox = function (flowCounterObj)
{
while (this.selectBox.hasChildNodes())
{
this.selectBox.removeChild(this.selectBox.firstChild);
}
var line = 0;
for(line = 0; line < this.lines.length; line++)
{
var newOption = document.createElement('option');
newOption.setAttribute('value','line_' + line);
newOption.innerHTML = 'Line ' + line;
newOption.onclick = function(){flowCounterObj.setCurrentLine(this.index);};
this.selectBox.appendChild(newOption);
}
};
上面的代码会从选择框中删除所有选项,并为我在数组中的每一行创建一个新选项。
它向onclick添加了一个事件。
当我在Chrome中选择我的选项时,他们会调用setCurrentLine()函数。但是在IE9中没有。
我已经看过IE9和Chrome中的调试窗口,他们应用相同的东西。
我尝试使用setAttribute('onclick',flowCounter.setCurrentLine('+line+');');
,但在IE9中无效(在Chrome中);
我也尝试使用addEventListener(...);
,但这在IE9中无效(在Chrome中)。
(在旁注上我应该为此实际使用addEventListener吗?这是正确的方法吗?)
我把代码放在JS lint中,它说我不应该在循环中创建函数吗?
有什么想法吗?你认为这实际上可能是一个错误吗?
马特
编辑:我在IE9中尝试了以下HTML代码:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<select id='lineSelect' size='4'>
<option value='line_1' onclick='alert("whoop");'>Line 1</option>
<option value='line_2' onclick='alert("whoop");'>Line 2</option>
<option value='line_3' onclick='alert("whoop");'>Line 3</option>
<option value='line_4' onclick='alert("whoop");'>Line 4</option>
</select>
</body>
</html>
这没有做任何事情?在chrome / safari / firefox / opera中!也是使用onClick / onChange。
答案 0 :(得分:2)
我查看了this msdn page,似乎option
没有onclick
事件。但是,它确实有onselect
或onchange
事件。
我认为在这种情况下,使用selectbox本身的onclick
或onchange
事件是最佳解决方案。
答案 1 :(得分:0)
另请注意,从IE9开始,onclick不再有效。 onClick “区分大小写”