Параметры javascript выбраны IE6 vs. FF2

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

тиа

<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>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
3 450
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Я не совсем уверен, почему ваш пример не работает, но он работает, если вы делаете это так (т.е. устанавливаете selectedIndex в <select>, а не устанавливаете свойство selected для <option>). Проверено FF3, IE6, Chrome.

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;
    }      
}

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

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

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

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

Другие вопросы по теме