Internet explorer 8 动态组合和mootools get方法在IE8中不起作用

Internet explorer 8 动态组合和mootools get方法在IE8中不起作用,internet-explorer-8,combobox,get,mootools,set,Internet Explorer 8,Combobox,Get,Mootools,Set,我对Mootools get方法和IE8有问题。这就是问题所在 我有一个select组合,它用Request.HTML动态加载选项 HTML: 此外,“选择”还有一个自定义样式,其中包括: 问题是当我加载模型的内容时(抛出一个错误): 对象不支持此属性或方法 我不知道为什么,但是 span.addEvent('change',function(){ span.set('text',this.options[this.options.selectedIndex].get('text'))

我对Mootools get方法和IE8有问题。这就是问题所在

我有一个select组合,它用Request.HTML动态加载选项

HTML:

此外,“选择”还有一个自定义样式,其中包括:

问题是当我加载模型的内容时(抛出一个错误):

对象不支持此属性或方法

我不知道为什么,但是

span.addEvent('change',function(){
     span.set('text',this.options[this.options.selectedIndex].get('text'));
});
不像通常那样与IE8配合使用,它与其他浏览器完美配合。我正在使用Mootools 1.3.2

有什么想法吗?非常感谢。

您无法以跨浏览器的方式通过innerHTML更新元素内容,更新:$model将尝试这样做

我建议通过onComplete:function{}进行重构,其中:

删除模型的所有子元素 迭代通过HTML发送的选项元素,并将它们注入模型 调用自定义样式提供的任何方法(如果有),以刷新model和fireEventchange的对象成员,突出显示新选定的脚本选择(如果需要)。 关于你的第二个问题

this.options.getvalue返回所选值

如果是多选,则可以有多个值

mootools提供selectel.getSelected,它返回一个选项数组,您可以通过迭代从中获取文本。因此:


selectel.getSelected.gettext将在多选时返回[sometext]或[sometext1,sometext2]。

谢谢@Dimitar。正如您所解释的,在删除了select with.empty的所有子级之后,我尝试使用这个responseElements.eachFunction{e.inject$'model';};但这在IE中不起作用。我做错了什么?谢谢,伙计。我不敢相信INTERNET EXPLORER仍然在制定自己的恼人的规则,我们需要找到解决这些问题的办法。。。因此,解决方案是,在注入之前,将其封装在select中,但我还是会尝试JSON。奇怪的是。->在jquery中尝试了它,结果很有效。所以他们必须在他们的代码中有一个解决方法,我不是jquery用户,所以这是一个实验。图-与mootools的一些核心开发人员进行了讨论,他们没有留下深刻印象。记录在案-即使是IE也无法理解这种对应关系opt.innerHTML=responseElements[i].innerHTML,因此最后我更改了我的sql查询,并为选择字段添加了一个id,以便将它们放入innerHTML:opt.innerHTML=responseElements[i]身份证件100%awesomeness.this.response.elements.length短1如果选项在ie8中没有父选项-小心!
var req = new Request.HTML({
        method: 'get',
        url: loadModels,
        data: "model="+model,
        update: $('model'),
}).send();
span.addEvent('change',function(){
     span.set('text',this.options[this.options.selectedIndex].get('text'));
});