我正在生成一个'选择'元素然后用选项填充它并将其插入到我的页面的DOM中。在FF,Chrome,Chromium等一切都很好,但在IE中没有选项显示在下拉列表中,但突出显示在光标下,当我点击空白列表时,事件处理程序被触发并正确处理。 这是相关的HTML区域:
<span id="spn_fyear" style="position:absolute; top:7px; left:200px; height:24px; cursor:pointer; color:#000000;" onclick="spn_fyear_onclick(this)">
<span id="spn_fyearno" style="position:absolute; top:0px; font:italic bold 17px sans-serif; color:#FFFEF2;"><?=$thisPage->getVar('start_year')?></span>
</span>
这里是有问题的javascript:
function spn_fyear_onclick(_obj)
{
//make start year list
var lstto = document.getElementById('lst_year');
var topts = new Array();
var nopt = null;
for(i=0; i<lstto.options.length; i++)
{
topts[i] = lstto.options[i].text;
}
var lstf = document.createElement('SELECT');
lstf.id = "lst_fyear";
lstf.style.position = "absolute";
lstf.style.top = "-3px";
lstf.style.left = "1px";
lstf.style.fontFamily = "sans-serif";
lstf.style.fontWeight = "normal";
lstf.style.fontSize = "12px ";
lstf.style.width = "55px";
lstf.style.color = "#000000";
lstf.style.display = "inline";
lstf.onchange = lst_fyear_onchange;
for(i = 0; i < topts.length; i++)
{
if(topts[i] != 'undefined')
{
nopt = document.createElement('OPTION');
nopt.text = topts[i];
nopt.value = topts[i];
lstf.appendChild(nopt);
}
}
document.getElementById('spn_fyear').appendChild(lstf);
}
在这一行:var lstto = document.getElementById('lst_year')
我正在创建对现有选择对象的引用,我从中复制选项数据。当页面首次加载时,lst_year会被php数据库查询填充。我在绝望中创建了数组(var topts = new Array()
),以防IE有一个复制属性和属性的怪癖但无济于事。就像我说的那样 - 在Linux和Windoze中,一切都像FF或Chrome中的梦想一样,但与IE一起陷入困境。我已经搜索了MSDN等一些不起眼的行为,但我很难过。任何建议将不胜感激 :)
亲切的问候,
仁
答案 0 :(得分:2)
最有可能的问题是:
nopt = document.createElement('OPTION');
尝试这里提到的方法:
JavaScript: add extra attribute after new Option()
(在我开始使用<option>
构造函数之前,我在使用new Option
元素和IE时遇到了很多问题。