【发布时间】:2011-08-15 11:45:20
【问题描述】:
我希望这不是一个重复的问题,但快速搜索并没有给我任何结果。
我需要动态创建一个<select multiple="multiple"> 元素,使用如下数据:
var _options = [
{
MaterialCombined: '123 - asd',
MaterialName: '123'
},{
MaterialCombined: '143123 - asdqw',
MaterialName: '143123'
}
];
现在,以下代码在浏览器中完美运行!= IE
var select = new Element('select ', {'multiple ': 'multiple ','size ': ((_options.length > 5) ? 5 : _options.length),'class ': 'AF_ddl ','style ': 'width: 250px'});
for (var i = 0; i < _options.length; ++i) {
var option = new Element('option ').update(_options[i].MaterialCombined);
option.value = _options[i].MaterialName;
select.options.add(option);
}
但在 IE 中,尝试在 select.options 属性上调用 add() 时会引发异常。这是为什么? IE 是否需要将select 插入到 DOM 中才能对其进行操作?
请注意,我确实让它像这样工作
var tmp = '';
for(var i = 0; i < _options.length; ++i){
tmp += '<option value="'+_options[i].MaterialName+'">'+_options[i].MaterialCombined+'</option>';
}
var select = new Element('select', {'multiple' : 'multiple', 'size' : ((_options.length > 5) ? 5 : _options.length) , 'class' : 'AF_ddl' , 'style' : 'width:250px'}).update(tmp);
但我真的不喜欢这种处理元素的方式! :(
【问题讨论】:
-
我正在使用 Prototype - 不要认为基本 DOM 中有
new Element('type', {..properties..})元素构造函数 :)
标签: javascript internet-explorer-8 prototypejs