Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么onChange会使Internet Explorer 7崩溃?_Javascript_Internet Explorer 7_Crash - Fatal编程技术网

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

Javascript 为什么onChange会使Internet Explorer 7崩溃?,javascript,internet-explorer-7,crash,Javascript,Internet Explorer 7,Crash,我们刚刚发布了一个网上商店 在此页面上,选择框会使某些计算机上的Internet Explorer 7崩溃。从来没有在我的电脑上。 有人知道为什么吗 实时链接: 更新:原来我发布的第一个帖子没有崩溃。 但以下情况确实如此: 屏幕转储: 原文: 以下是我认为可能涉及的一些代码: function DrawAmountDD(maxAmount){ /*var max = parseInt(maxAmount) > parseInt(maxShowAmount) ? ma

我们刚刚发布了一个网上商店

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

实时链接: 更新:原来我发布的第一个帖子没有崩溃。 但以下情况确实如此:

屏幕转储:

原文:

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

    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>
更新

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

<select id="amountDD">
<option value="1">1</option>
</select>
我在这个链接上找到了一些信息,上面说单个选项也应该有一个选定的属性,但如果没有该属性,它似乎会崩溃


首先,在标记中不需要javascript:前缀。处理程序会期望它是javascript代码,我很惊讶任何浏览器都会解析它。通常,您将其视为href属性中的协议标记,即使这样也不是处理它的好方法。其次,该函数的参数是对DOM元素select的引用,该元素的value属性可能得到很好的支持,也可能得不到很好的支持。在DOM中有一个很好的HTML/Javascript参考。请参阅此处的参考资料。要获取该值,您可能需要执行e.options[e.selectedIndex].value。第三,通过javascript添加处理程序可能会更好

var select = document.getElementById( 'sizeDD' );
select.onchange = function() { sizeChange(select); };
或者因为我现在看到您正在使用jQuery:

$('sizeDD').change( sizeChange );

我希望崩溃是指JavaScript不工作,而不是Internet Explorer崩溃。如果只是页面,您通常可以通过单击状态栏中页面上的错误来查看错误。
此外,请尝试一些经典的JavaScript调试—一次注释一个函数块,直到找到使其崩溃的块,然后将其缩小到行。

我将尽可能自己回答这个问题。如果有人有一个更详细的答案,请加上,我会标记为接受一个代替

Internet Explorer 7在某些情况下似乎会由于浏览器或系统中的错误而崩溃。我们遇到问题的机器来自运行Vista的HP。可能是供应商安装了干扰浏览器的东西,如“我的HP ProtectTools安全”上的登录,如下所述:

其他可能的伊利石如下所述:


最简单的解决办法是将Internet Explorer升级到8版。

你能同时发布“GetAmountById”函数吗?另外-你能解释一下崩溃是什么意思吗?你的截图显示了网站,但没有显示错误。浏览器完全崩溃,但不是在我的机器上。我忘了发布url。如果有人在触摸尺寸和颜色选择框时IE7崩溃,请告诉我。需要更多的线索。你可以在这里试用:那么除了你的机器之外,它在每台XP机器上都会死掉?您是否调试了JS,为您使用的每个变量添加了警报等等?此外,正如KevinP所说,maxShowAmount和GetAmountById没有定义。最后,你能给出select中的选项标签吗?我不太介意否决票,但也许你想解释一下我错了什么。当我犯错时,我总是乐于学习。请参见value属性。在此处测试:。请注意,selectedIndex是可靠的,在浏览器中运行良好。也谢谢你没有对否决票感到惊慌失措。最近在DV'ing+评论时被烧掉了。学习起来很有趣-我没有检查规范,但我在w3schools经常使用的资源。我是说完全崩溃了。我在客户的笔记本电脑上看到过。这种情况每次都发生在他们的两台电脑上。我已经要求他们禁用所有插件和enpty缓存,但仍然。没有js错误。我试过在各种机器上使用所有broswers。我的IE7没有崩溃。只有顾客。
$('sizeDD').change( sizeChange );