代码之家  ›  专栏  ›  技术社区  ›  Syspect

IE中未触发Event.observe

  •  0
  • Syspect  · 技术社区  · 10 年前
    Event.observe(
        'size_list',
        'change',
        itemOptions["_hiddenSkuField"].getSkuOfProductBySize
    );
    

    这个 size_list 是带有一些选项的下拉列表。所以,这应该调用一个函数来生成一些HTML,但这不会发生。不用说,它在Chrome和Firefox中运行得很好。

    我看不出问题是什么,我没有进入 myFoo 甚至是鞋面 .observe 代码,当我尝试调试时。

    getSkuOfProductBySize: function() {
            document.getElementById('product-type').value = '';
            document.getElementById('sku_hidden').value = '';
            var selectedIndex = document.getElementById('dropdown_options').value;
            for (var i=0; i<itemOptions["_hiddenSkuField"].products.length; i++) {
                if (itemOptions["_hiddenSkuField"].products[i].size == selectedIndex) {
                    document.getElementById('sku_hidden').value = itemOptions["_hiddenSkuField"].products[i].sku;
                    itemOptions["_hiddenSkuField"].backupResponse = itemOptions["_hiddenSkuField"].products[i];
                    itemOptions["_hiddenSkuField"].callShowHtmlOfButtons(itemOptions["_hiddenSkuField"].products[i]);
                    return;
                }
            };
        }
    

    itemOptions["_hiddenSkuField"] 是我拥有所有东西的全局对象D

    更新: 我试着简单地 alert() 围绕函数或观察者,但它不起作用。也尝试了 click 事件-无成功。。。

    我很少做前端开发,但经过我今天的努力,我知道为什么IE如此讨厌。

    2 回复  |  直到 10 年前
        1
  •  1
  •   Walter    10 年前

    在原型中,上述内容如下

    $('size_list').observe('change', function(evt){
      itemOptions['_hiddenSkuField'].getSkuOfProductBySize();
    });
    

    我还怀疑,有一种更简单的方法来构建这个页面,这样,仅对象就可以获得它们所需的所有数据,而且您不需要在DOM中挂着这个“神对象”。

        2
  •  0
  •   Milkncookiez    10 年前

    这是一个有点难看的解决方案,因为您使用的是prototype.js,但您仍然可以尝试另一种解决方案(如果您没有找到其他解决方案)-使用jQuery绑定观察事件:

    $('#dropdown_options').bind('change', function(){
            itemOptions["_hiddenSkuField"].getSkuOfProductBySize();
    });