powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Почему не работает в IE ?
18 сообщений из 18, страница 1 из 1
Почему не работает в IE ?
    #35704625
outman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
function getModels( models ) {
 var objSel = document.getElementById("models");
 var txt='';
 var val='';
 var s='';
 for(i=objSel.length- 1 ; i>= 0 ; i--)
        objSel.options[i] = null;
	for (i= 1 ;i<models.length;i++)
	{
	    if (models[i]==':')
		 {
	          val = s;	
                  s='';			
                 }
	    else			
		 if (models[i]==';')
		     {
	              txt = s;	
                     s='';
                     addOption(objSel, txt, val, false);
    	             }
	    else
		 s+=models[i];		 
    }
}
В переменную s пишется постоянно Undefined. Что этому эксплореру надо от меня ???
...
Рейтинг: 0 / 0
Почему не работает в IE ?
    #35704688
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
совершенно непонятно при чем здесь ИЕ, и что такое models и смысл алгоритма вообще. Задавайте вопрос нормально.
...
Рейтинг: 0 / 0
Почему не работает в IE ?
    #35704735
outman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
function processReqChange() {
  if(req.readyState ==  4 ) {
    if(req.status ==  200 ) {
		getModels(req.responseText);}
    } else {
      alert("There was a problem retrieving the XML data:\n" + req.statusText);
    }
  }
}
В req.responseText приходят значения '1:IMPREZA;2:LEGACY;3:FORESTER'.
...
Рейтинг: 0 / 0
Почему не работает в IE ?
    #35704751
outman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
illionсовершенно непонятно при чем здесь ИЕ, и что такое models и смысл алгоритма вообще. Задавайте вопрос нормально.

В фаерфоксе я вижу результат обработки функции, а в IE нет, в s пишет Undefined.
...
Рейтинг: 0 / 0
Почему не работает в IE ?
    #35705349
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
outmanВ req.responseText приходят значения '1:IMPREZA;2:LEGACY;3:FORESTER'.Я правильно понял, что Вы разбираете эту строку в коде?
Уважаемый, да Вы что?!
Срочно читать про JSON!
...
Рейтинг: 0 / 0
Почему не работает в IE ?
    #35705431
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И хотелось бы посмотреть на браузер, в котором ЭТО будет работать.
Судя по всему, до JSON тут далековато ... надо начинать с азов. Все очень плохо ...
...
Рейтинг: 0 / 0
Почему не работает в IE ?
    #35707068
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
до JSON может и далековато, но все не так уж и очень плохо - до аякс-запросов как-то же дошло дело.

outman,
Чтоб не идтить в неизвестном направлении за JSON и азами, держите маленький примерчик. В нем response как раз представлен в этом самом формате JSON.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<script>
var response = "{1:'IMPREZA',2:'LEGACY',3:'FORESTER'}";
function addOpt(oData)
{
	var objSel = document.getElementById("models");
	for (var i in oData)
	{
		var newOpt = document.createElement('option');
		newOpt.value = i;
		newOpt.innerHTML = oData[i];
		objSel.appendChild(newOpt);
	}
}
</script>
<select id="models"></select><br>
<button onclick="addOpt(eval('('+response+')'))">доб. значения в селект</button>
...
Рейтинг: 0 / 0
Почему не работает в IE ?
    #35707705
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только в список значения можно спецметодами вставлять:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<script>
var response = "{1:'IMPREZA',2:'LEGACY',3:'FORESTER'}";
function addOpt(oData) {
	var objSel = document.getElementById("models");
	objSel.options.length =  0 ;
	for (var i =  0 , opt; opt = oData[i]; i++)
		objSel.options.add(new Option(opt, i));
}
</script>
<select id="models"></select><br>
<button onclick="addOpt(eval('('+response+')'))">доб. значения в селект</button>
...
Рейтинг: 0 / 0
Почему не работает в IE ?
    #35707793
outman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
illion, я примерно так и сделал, но моск успел оплавиться =)
Ваш пример очень хороший, спасибо.
...
Рейтинг: 0 / 0
Почему не работает в IE ?
    #35708161
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckТолько в список значения можно спецметодами вставлять
ага, можно. Я просто редко этим пользуюсь и поэтому никак не могу запомнить. Или наоборот - не могу запомнить и поэтому для селектов использую appendChild на автомате.... Наверное, скоро пора будет записывать все мысли в блокнотик :-(
...
Рейтинг: 0 / 0
Почему не работает в IE ?
    #35708507
outman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код от illion работает, а от IDVsbruck нет
...
Рейтинг: 0 / 0
Почему не работает в IE ?
    #35708563
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
outmanКод от illion работает, а от IDVsbruck нетНе удивительно. illion всё-таки модератор форума. "Административный ресурс", понимаете ли
...
Рейтинг: 0 / 0
Почему не работает в IE ?
    #35708713
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
outmanКод от illion работает, а от IDVsbruck нет
там всего-то - маленькая опечаточка, можно было и самостоятельно заметить: обход надо начинать не с i=0, а с i=1. Хотя для хэшей это все-таки не универсальный метод, лучше использовать for (var i in myHash), тем более что js (в отличие от некоторых других языков) не нарушает порядок следования ключей.

Яростный МечНе удивительно. illion всё-таки модератор форума
не угадал. Я просто практически никогда не набираю код в окне сообщения, потому что он там а) без подсветки, некрасивый и малопонятный, б) не выравнивается tab'ом. Кому-то это причины покажутся смешными, но мне их достаточно :-). Поэтому быстренько открываю свой любимый editplus. А в нем рука уже сама без спросу автоматически жмет ctrl+b, чтоб посмотреть что вышло :-).
...
Рейтинг: 0 / 0
Почему не работает в IE ?
    #35708806
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да, ну да ...
Тут разобран идеальный, но редкий, вариант, когда приходит массив с правильной нумерацией.
Обычно на входе пользователь получает структуру, где первым идет любой номер (или имя), поэтому использование представленного кода неуниверсальное.
Более того, если прийдет уже response = "{1:'IMPREZA',2:'LEGACY',4:'FORESTER'}", то все отлично вставится, но при выборе опшна #3 "FORESTER" на сервер уйдет #3, а надо 4 (кто ж посылает текстовое значение? - нужен номер).
...
Рейтинг: 0 / 0
Почему не работает в IE ?
    #35708813
outman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
illion, я попробовал, но не понял конструкцию
Код: plaintext
1.
for (var i =  0 , opt; opt = oData[i]; i++)
с делфей я =)
...
Рейтинг: 0 / 0
Почему не работает в IE ?
    #35708855
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, это не иллион ее показала, потому и вопрос, пожалуй, не к ней ...

Javascript, на удивление, достаточно мощный и очень-очень гибкий язык. Не исключением являются и циклы. Так как js не компилятор, а интерпретатор, то его выполнение относительно медленное, поэтому выбираются самые быстрые варианты.

Способ, представленный illion, самый удобный, но, к сожалению, самый медленный. Тот, который представил я - наиболее быстрый. Скажу честно, не проверял сам, но ресурсу, где я все это прочел, доверяю.
Суть цикла: инициируем счетчик i и переменную opt. Цикл будет работать пока вырадение opt = oData[i] будет возвращать true. При i=4 oData[4] вернет undefined, поэтому выражение opt=oData[4] вернет false и цикл завершится. Ну, естественно, параллельно назначается opt, которое нам нужно в самом цикле.
...
Рейтинг: 0 / 0
Почему не работает в IE ?
    #35709577
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck,

чтобы почувствовать разницу между for (var i = 0, opt; opt = oData[i]; i++) и for (var i = 0; i < oData.length; i++), тебе, пожалуй, потребуется действительно огромный массив данных... :-) . Хотя я обычно применяю первый способ, но только к массивам (да и разницы между этими двумя формами записи еще ни разу не ощутила, использую только потому, что она компактнее и понятнее).
Основные тормоза то связаны с визуализацией производимых со страницей махинаций. Вот тут уже возможна разница между appendChild и options.add, но на малом количестве элементов ты опять-таки не почувствуешь ее, а большое количество не имеет смысла пихать в стандартный селект.

Проверять насколько одно быстрее другого и при каких условиях - и впрямь лень :-). Хотя делов то на несколько минут.
...
Рейтинг: 0 / 0
Почему не работает в IE ?
    #35709643
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это точно ...
И все же, скажу тебе, когда знаешь, что сделал все возможное, чтобы выжать максимум - это приятно. А я и впрямь никогда не сталкивался с огромными массивами данных. Если таковые имеются, я всегда разбиваю на "prev page" & "next page", а на сервере подготавливаю порции.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Почему не работает в IE ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]