Мы только что выпустили интернет-магазин.
На этой странице selectboxes дает сбой Internet Explorer 7 на некоторых компьютерах. Никогда на моем компьютере.
Кто-нибудь знает почему?
Прямая ссылка: http://velour.se/collection/women/tops/eloise
Обновление: оказывается, что первое, как я разместил, не вылетело.
Но следующее делает: http://velour.se/collection/women/outerwear/irina
Screendump: 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