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

发布于 2024-11-19 07:36:31 字数 950 浏览 0 评论 0原文

我在使用 Mootools get 方法和 IE8 时遇到问题。就是这样。

我有一个选择组合,可以使用 Request.HTML

HTML 动态加载选项:

<select name="model" id="model" class="customSelectModel">
    <option>Modelo</option>
</select>

Javascript:

var req = new Request.HTML({
        method: 'get',
        url: loadModels,
        data: "model="+model,
        update: $('model'),
}).send();

此外,选择具有自定义样式,如下所示: http://vault.hanover.edu/~stilson/simpleselectstyle/

问题是当我加载 model 的内容时,IE 抛出一个错误:

对象不支持此属性或方法。

我不知道为什么,但

span.addEvent('change',function(){
     span.set('text',this.options[this.options.selectedIndex].get('text'));
});

不适用于 IE8(通常,它与其他浏览器完美配合)。我正在使用 Mootools 1.3.2

有什么想法吗?多谢。

I have a problem with the Mootools get method and IE8. This is the thing.

I have a select combo that loads dynamically the options with a Request.HTML

HTML:

<select name="model" id="model" class="customSelectModel">
    <option>Modelo</option>
</select>

Javascript:

var req = new Request.HTML({
        method: 'get',
        url: loadModels,
        data: "model="+model,
        update: $('model'),
}).send();

Also, the select has a custom style, with this: http://vault.hanover.edu/~stilson/simpleselectstyle/

The problem is when I load the content of model, IE throw me an error:

Object doesn't support this property or method.

I don't know why, but

span.addEvent('change',function(){
     span.set('text',this.options[this.options.selectedIndex].get('text'));
});

does not work with IE8 (as usually, it works perfectly with the other browsers) . I'm using Mootools 1.3.2

Any ideas? Thanks a lot.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清风不识月 2024-11-26 07:36:31

您无法以跨浏览器的方式通过 innerHTML 更新

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

  • 删除 model 的所有子元素,
  • 迭代通过 HTML 发送的选项元素并将它们注入到 >model
  • 调用您的自定义样式提供的任何方法(如果有)来刷新 model 的对象成员,并 fireEvent("change") 突出显示您的新对象如果需要,请选择脚本编写选项。

对于你的第二个问题。

this.options.get("value") 返回选定的值。

如果是多项选择,则可以有超过 1 个值。

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

selectel.getSelected().get("text") 将返回 ["sometext"]["sometext1", "sometext2"] 进行多项选择。

you cannot update <select> elements content via innerHTML in a cross-browser fashion, which the update: $("model") will try to do.

I would suggest refactoring via an onComplete: function() {} where you:

  • delete all child elements of model
  • iterate through options elements sent via HTML and inject them into the model
  • call whatever method your custom styling provides (if it has any) to freshen object members for model and fireEvent("change") to highlight your new selected choice for scripting, if you need it.

for your second question.

this.options.get("value") returns selected value.

if its a multiple select, it can have more than 1 value.

mootools provides selectel.getSelected() which returns an array of options you can iterate to get text from. hence:

selectel.getSelected().get("text") will return ["sometext"] or ["sometext1", "sometext2"] on a multiple select.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文