javascript - 为什么 onChange 会使 Internet Explorer 7 崩溃?

标签 javascript internet-explorer-7 crash

我们刚刚发布了一个在线商店。

在此页面上,选择框会导致某些计算机上的 Internet Explorer 7 崩溃。从来没有在我的电脑上。 有谁知道为什么吗?

实时链接: http://velour.se/collection/women/tops/eloise 更新:结果证明我发布的第一个没有崩溃。 但以下是:http://velour.se/collection/women/outerwear/irina

屏幕转储:http://skitch.com/jesperlind/nc4j2/tops-eloise-velour-ie7-bug

原始版本:

<select id="sizeDD" onchange="javascript:SizeChange(this);"></select>

//Internet Explorer problem.
function SizeChange(e){
    DrawAmountDD(GetAmountById(e.value));
}

这是我认为可能涉及的一些代码:

    function DrawAmountDD(maxAmount){
        /*var max = parseInt(maxAmount) > parseInt(maxShowAmount) ? maxShowAmount : maxAmount;
        var html = "";
        for(var i=1; i <= max; i++){
            html += "<option value='" + i + "'>" + i + "</option>";
        }
        $("#amountDD").html(html);*/

        var max = parseInt(maxAmount) > parseInt(maxShowAmount) ? maxShowAmount : maxAmount;
        var ddlAmount = document.getElementById("amountDD");
        ddlAmount.length=max;

        for(var a=1; a <= max; a++){
            ddlAmount.options[a-1].value = a;
            ddlAmount.options[a-1].text = a;
        }
    }

版本 2:

<select id="sizeDD"></select>
<select id="amountDD"></select>

<script type="text/javascript">
    var maxShowAmount = '5';
    var colorSizeArr =
      { "colSize":
        [
            { "color": "Black/Offwhite",
              "specificId": "2",
              "size": "XS",
              "amount": "1" }
        ]
      };

    colorSizeArr.colSize.push(
      { "color": "Black/Offwhite",
        "specificId": "13",
        "size": "S",
        "amount": "2" });

    $(document).ready(function () {
        var selectSizeDD = document.getElementById('sizeDD');
        selectSizeDD.onchange = function () { sizeChange(selectSizeDD); };
    });

    function sizeChange(e) {
        DrawAmountDD(GetAmountById(e.value));
    }

    function GetAmountById(specificId) {
        for (var i = 0; i < colorSizeArr.colSize.length; i++) {
            if (colorSizeArr.colSize[i].specificId == specificId) {
                return colorSizeArr.colSize[i].amount;
            }
        }
        return 1;
    }

    function DrawAmountDD(maxAmount) {
        var max = parseInt(maxAmount) > parseInt(maxShowAmount) ? maxShowAmount : maxAmount;
        var html = "";
        for (var i = 1; i <= max; i++) {
            html += "<option value='" + i + "'>" + i + "</option>";
        }
        $("#amountDD").html(html);

    }
</script>

更新

我还没有弄清楚为什么 Internet Explorer 7 在某些计算机上崩溃。无论如何,上面的代码与它没有任何关系。这要简单得多。单击只有一个选项的选择框时,浏览器崩溃了。像这样:

<select id="amountDD">
<option value="1">1</option>
</select>

我在这个链接上找到了一些信息,其中说单个选项也应该有一个选定的属性,但如果没有该属性,它似乎会崩溃。

http://www.akselvoll.net/2007/08/ie7-crashes-when-clicking-on-drop-down.html

最佳答案

我希望“崩溃”是指“JavaScript 不起作用”,而不是“Internet Explorer 崩溃”。如果只是页面,通常可以通过点击状态栏中的“页面错误”来查看错误。
另外,尝试一些经典的 JavaScript 调试 - 一次注释掉一个函数 block ,直到找到导致其崩溃的 block ,然后将范围缩小到该行。

关于javascript - 为什么 onChange 会使 Internet Explorer 7 崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1954620/

相关文章:

jQuery Innerfade - 在 IE7 上奇怪地淡化

c++ - 对删除[](损坏的未排序 block )进行故障排除

crash - Ubuntu 16.04 屏幕仅完全卡住鼠标移动

java - Android应用在启动时崩溃

IE 中的 CSS : Background image position is not updated on ajax update

css - HTML 中 iPhone 的类似聚光灯的框

javascript - 单击时将元素设置为隐藏

javascript - 使用 Fabric.js 显示适用的控件

javascript - 你如何在 html 上设置 processingJS?

javascript - 如何在现代桌面和移动浏览器上使开关可拖动/可点击