Firefox против IE Javascript проблема - PullRequest
0 голосов
/ 04 февраля 2011

Я вижу, что есть много связанных вопросов по этому вопросу, и, читая их, я предполагаю, что это проблема getElementById, так как это, похоже, проблема в вопросах других людей, но я не совсем уверен, чтоЯ поступил неправильно.Следующее работает в FireFox без сообщений на консоли ошибок и FireBug, отображающих правильные значения:

    function updateSQ() {
        var sQuestion = document.getElementById('<%=sQuestion.ClientID%>');
        sQuestion.value = "";
        var questions = document.getElementsByName('selectQuestion');
        for (question in questions) {
            if (questions[question].value != null)
                            sQuestion.value += questions[question].value + ",";
        }
        alert(sQuestion.value);
    }

Эта функция вызывается динамически генерируемым тегом выбора HTML:

<SELECT id="squestion1" name="selectQuestion" onchange="updateSQ();">
<OPTION value="notChosen">--Please Select One--</OPTION> <OPTION value="in">India</OPTION> <OPTION value="de">Germany</OPTION>
<OPTION value="fr">France</OPTION>
<OPTION value="us">United States</OPTION>
<OPTION value="ch">Switzerland</OPTION>
</SELECT>

Как видите, javascript пытаетсячтобы обновить значение элемента управления ASP.NET: <asp:HiddenField ID="sQuestion" runat="server" value="" />

Идея состоит в том, что при изменении выбора он вызывает JS и сохраняет значения из всех операторов выбора в элемент управления ASP.NET (что-то вроде неуклюжей работы для раздражающего набора требований и устаревшего кода, который меня попросили использовать).

Последнее предупреждение имеет ожидаемые значения в Firefox, но в IE7 это пустая строка, поддерживающая идею о том, чтоЯ просто не могу найти правильный тег.Любой вклад с благодарностью.Спасибо.

Ответы [ 2 ]

1 голос
/ 04 февраля 2011

getElementsByName в IE не возвращает массив, но возвращает использование объекта

for (var question  = 0; question < questions.length; question ++)

вместо

for (question in questions) 
1 голос
/ 04 февраля 2011

Я думаю, что ваша проблема с getElementsByName

HTML-элементы, созданные с использованием Javascript DOM не доступны Метод document.getElementsByName в IE.

Попробуйте следующий запрос Google и посмотрите множество отчетов об ошибках и разочарований по этому вопросу;)

http://www.google.dk/search?sourceid=chrome&ie=UTF-8&q=getElementsByName+ie

...