Javascript 为什么onChange会使Internet Explorer 7崩溃?
我们刚刚发布了一个网上商店 在此页面上,选择框会使某些计算机上的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
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 );