Варианты JavaScript выбран IE6 против FF2 - PullRequest
2 голосов
/ 22 декабря 2008

следующий js отлично работает в FF2, но в IE6 раскрывающийся список всегда выбирает один из вариантов раннего, IE -> testix2 vs. FF2 -> testix3 Если мы добавим alertBox где-нибудь в сценарии, он также отлично работает в IE6. Но как решить это без alertBox?

ТИА

<script language="JavaScript" type="text/javascript">
<!--
function Entry(value, name, selected) {
    this.value = value;
    this.name = name;
    this.selected = selected;
}


//-->
</script>
        <select id="selSeaShells">

        </select>
<script language="JavaScript" type="text/javascript">
<!--
var productCategoryLevel2 = new Array();

productCategoryLevel2.push(new Entry('Hallo1', 'testix1', false));
productCategoryLevel2.push(new Entry('Hallo2', 'testix2', false));
productCategoryLevel2.push(new Entry('Hallo3', 'testix3', true));

    var i = 0;
        for (i in productCategoryLevel2) {
        var optL2 = document.createElement('option');
        optL2.selected = true;

                optL2.text = productCategoryLevel2[i].name;
        optL2.value = productCategoryLevel2[i].value;
        if (productCategoryLevel2[i].selected == true) {
            productCategoryLevel2[i].selected = true;
            optL2.selected = true;
        } else {
            optL2.selected = false;     
        }
                try {
            document.getElementById("selSeaShells").add(optL2, null);
                } catch(ex3) {
            document.getElementById("selSeaShells").add(optL2);
                }
        }
//-->
</script>

Ответы [ 3 ]

3 голосов
/ 22 декабря 2008

Я не совсем уверен, почему ваш пример не работает, но он работает, если вы делаете это следующим образом (т. Е. Устанавливаете selectedIndex на

var i = 0;
for (i in productCategoryLevel2) {
    var optL2 = document.createElement('option');

    optL2.text = productCategoryLevel2[i].name;
    optL2.value = productCategoryLevel2[i].value;
    try {
        document.getElementById("selSeaShells").add(optL2, null);
    } catch(ex3) {
            document.getElementById("selSeaShells").add(optL2);
    }

    if (productCategoryLevel2[i].selected == true) {
            document.getElementById("selSeaShells").selectedIndex = i;
    }      
}
0 голосов
/ 22 декабря 2008

Это похоже на ошибку IE (мне интересно, если это проблема с преобразованием истинного в 1), но вы внесли это, основываясь на индексе выбора, а не на самом выборе, который исправляет tomhaigh.

Важно понимать, что если вы начнете с нуля опций, не имеет значения, какое значение вы хотели бы дать первой опции для выбора - в качестве элемента один из набора единиц он может быть только выбран = true.

(я согласен с триптихом насчет for тоже)

0 голосов
/ 22 декабря 2008

Я не могу проверить это прямо сейчас, но вы можете перебирать свой массив, используя стандартный цикл for (;;), а не конструкцию for..in, которая должна использоваться только для объектов в javascript.

...