ie下form.elements指向本身的问题

今天出了个故障,ie下的数据展示有误,而其他浏览器正常,查询到最后的结果是ie下少了3个参数,比较奇怪的是参数是通过KISSY库循环去取的,理论上兼容不应该存在。

循环如下:

var formEls = DOM.filter(DOM.get('#J_Form').elements, function(el){
        return DOM.hasClass(el, 'J_FareParam');
});

看上去挺简单的。。可是就不对,debug后发现

form的elements返回的结果是他本身,也就是说form.elements == form,ie<=8

网上也有人碰到这个问题:https://mootools.lighthouseapp.com/projects/2706/tickets/582-formelements-form-in-ie

解决方案,使用数组下标替换原生的for:

var forms = DOM.get('#J_Form').elements;
for (var i = 0; i < forms.length; i++) {
     var el = forms[i];
     if(DOM.hasClass(el, 'J_FareParam')) {
         //TODO
     }
}

Done!

原文地址:https://www.cnblogs.com/xiziyin/p/2859889.html