IE обрабатывает значения объектов javascript по-разному? - PullRequest
1 голос
/ 06 января 2012

У меня есть скрипт, как показано ниже

    document.getElementById('lan').innerHTML=lan;
    document.getElementById('city').innerHTML=city;
    document.getElementById('text1').value=city+'|'+lan;

Переменные lan и city содержат текст, например, 'kalmar'.

Что я хочу сделать, это взять содержимое этих двух переменных и объединить их и установить эту объединенную строку в качестве значения поля формы, чтобы можно было использовать обычную функцию отправки формы для сохранения ее в базе данных .

В Chrome и FF он работает отлично, но не в IE (неожиданность). Если я сделаю alert(document.getElementById('text1').value), чтобы посмотреть, какое значение он содержит, IE напечатает только

[object]

Какие-нибудь подсказки относительно того, что произошло / что я могу сделать, чтобы сделать его совместимым?

Это большой документ, но я вырезал и вставил здесь самое необходимое:

HTML-элемент для получения окончательного комбинированного значения

<input type='hidden' name='text1' id='text1' value=''>

HTML-элемент (ссылка) для присвоения значения вышеуказанному HTML-элементу:

<div id="searchResult"><a href="javascript:populateFields('Kalmar','Kalmar');">Kalmar i Kalmar</a><br></div>

function populateFields(lan,city)
{
    document.getElementById('lan').innerHTML=lan;
    document.getElementById('city').innerHTML=city;
    document.getElementById('text1').setAttribute('value',city+'|'+lan)
    document.getElementById('save_button').style.zIndex='auto';
alert('LAN: '+document.getElementById('lan').innerHTML);    
alert('CITY: '+document.getElementById('city').innerHTML);  
alert('TEXT1: '+document.getElementById('text1').value);    
}

Также - оповещение () теперь проверяет правильные значения (то есть Kalmar | Kalmar), но форма все еще не сохраняет значение, которое я установил для поля text1!

Ответы [ 2 ]

0 голосов
/ 07 января 2012

Итак, я обнаружил, что здесь возникло несколько проблем.

Во-первых, функция populate_fields () имела локальные переменные, названные так же, как некоторые элементы html в документе.IE это не нравится, поэтому он печатал [object], когда я пытался прочитать значение, хранящееся в моих переменных (поскольку уже существовал html-элемент / DOM-объект с таким же именем, я полагаю, что мои переменные функции просто никогда не объявлялись)1003 *

После того, как с этим разобрались, я также понял, что форма не сохранила мое значение, хотя казалось, что элемент формы получил правильное значение (я проверил, используя alert).Оказывается, у меня была вложенная форма, т.е.

<form>

<form>
</form>

<input last inputfield of first form>
</form>

, и это заставило IE полностью игнорировать последнее поле формы ... по какой-то причине ни у одного из других браузеров не было проблем ...

Спасибо за внимание, ребята!

0 голосов
/ 06 января 2012

В IE вы можете использовать setAttribute('value',city+'|'+lan).

Надеюсь, что это соответствует вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...