Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2009, 00:23
Интересующийся
Отправить личное сообщение для dm1tr1y Посмотреть профиль Найти все сообщения от dm1tr1y
 
Регистрация: 06.12.2008
Сообщений: 14

Динамическая HTML форма (FireFox - работает, IE - не работает)
Здравствуйте,

подскажите, пожалуйста, в чем ошибка?
Скрипт работает в FireFox, но не работает в IE.

Исходный код:
<script type="text/JavaScript">

//Функция работает в обоих браузерах
function add_item()
	{
	opt = document.getElementById("st_list");
	opt2 = document.getElementById("ed_list");
	num_s = opt.options.selectedIndex;
	m_id = opt.options[num_s].value;
	if (opt.options.selectedIndex!= -1)
		{
		var len_d = opt2.options.length;
		opt2.options[len_d] = new Option(opt.options[num_s].text, opt.options[num_s].value);
		opt.removeChild(opt.options[num_s]);
		}
	}

//Функция работает в обоих браузерах
function del_item()
	{
	opt = document.getElementById("ed_list");
	opt2 = document.getElementById("st_list");
	num_s = opt.options.selectedIndex;
	m_id = opt.options[num_s].value;
	if (opt.options.selectedIndex!= -1)
		{
		var len_d = opt2.options.length;
		opt2.options[len_d] = new Option(opt.options[num_s].text, opt.options[num_s].value);
		opt.removeChild(opt.options[num_s]);
		}
	}

//Функция НЕ работает в обоих браузерах
function add_all_item()
	{
	opt = document.getElementById("st_list");
	opt2 = document.getElementById("ed_list");
	var size = opt.options.length;
	for (var i=0; i<size; i++)
		{
		var o = new Option(opt.options[0].text, opt.options[0].value);
		opt2.appendChild(o);
		opt.removeChild(opt.options[0]);
		}
	}

//Функция НЕ работает в обоих браузерах
function del_all_item()
	{
	opt = document.getElementById("ed_list");
	opt2 = document.getElementById("st_list");
	var size = opt.options.length;
	for (var i=0; i<size; i++)
		{
		var o = new Option(opt.options[0].text, opt.options[0].value);
		opt2.appendChild(o);
		opt.removeChild(opt.options[0]);
		}
	}

//Функция НЕ работает в обоих браузерах
function add_num_item()
	{
	opt = document.getElementById("st_list");
	opt2 = document.getElementById("ed_list");
	var num = document.Form.add_num.value;
	for (var i=0; i<num; i++)
		{
		var o = new Option(opt.options[0].text, opt.options[0].value);
		opt2.appendChild(o);
		opt.removeChild(opt.options[0]);
		}
	}

//Функция НЕ работает в обоих браузерах
function del_num_item()
	{
	opt = document.getElementById("ed_list");
	opt2 = document.getElementById("st_list");
	var num = document.Form.del_num.value;
	for (var i=0; i<num; i++)
		{
		var o = new Option(opt.options[0].text, opt.options[0].value);
		opt2.appendChild(o);
		opt.removeChild(opt.options[0]);
		}
	}
</script>

<form name='Form' action='' method='post'>
<table border='1' cellpadding='0' cellspacing='0'>
<tr align=center>
	<td align='center'>
		<select name='st_list' id='st_list' size='9' class='FormSize' ondblclick='add_item();'>
		<option value='1'>111</option>
		<option value='2'>222</option>
		<option value='3'>333</option>
		<option value='4'>444</option>
		</select>
	</td>
	<td align='center'>
		<input name='add_num' type='text' size='1'>
		<input name='add' class='ButtonSize1' value='&gt;' type='button' onclick='add_num_item();'><br>
		<input name='add' class='ButtonSize2' value='&gt;' type='button' onclick='add_item();'><br>
		<input name='add' class='ButtonSize2' value='&gt;&gt;' type='button' onclick='add_all_item();'><br>
		<input name='del' class='ButtonSize2' value='&lt;&lt;' type='button' onclick='del_all_item();'><br>
		<input name='del' class='ButtonSize2' value='&lt;' type='button' onclick='del_item();'><br>
		<input name='del' class='ButtonSize1' value='&lt;' type='button' onclick='del_num_item();'>
		<input name='del_num' type='text' size='1'>
	</td>
	<td align='center'>
		<select name='list[]' id='ed_list' size='9' class='FormSize' ondblclick='del_item();'>
		</select>
	</td>
</tr>
</table>
</form>
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2009, 07:34
...
Отправить личное сообщение для Zibba Посмотреть профиль Найти все сообщения от Zibba
 
Регистрация: 13.10.2008
Сообщений: 225

Ну еще бы
opt.options[0].text
А счетчик цикла тогда зачем? (i) . Копайте в этом направлении.

Последний раз редактировалось Zibba, 10.03.2009 в 08:15.
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2009, 13:43
Интересующийся
Отправить личное сообщение для dm1tr1y Посмотреть профиль Найти все сообщения от dm1tr1y
 
Регистрация: 06.12.2008
Сообщений: 14

Счетчик цикла тут потому, что я N раз обрабатываю нулевой элемент.
Это сделано затем, что без этого - получается динамически изменяемый массив.
Ну, грубо говоря, если у меня надо обработать 4 элемента (0, 1, 2, 3), то после нескольких итераций количество элементов изменится и, например, на второй итерации, элемент имевший первоначальный номер 3 будет уже 1м. И обработать элемент массива 3 - уже не получится.
Ответить с цитированием
  #4 (permalink)  
Старый 10.03.2009, 13:59
...
Отправить личное сообщение для Zibba Посмотреть профиль Найти все сообщения от Zibba
 
Регистрация: 13.10.2008
Сообщений: 225

Посмотерл,
opt2.appendChild(o);
не хочет работать в IE :/ попробуйте делать так:
opt2.options[opt2.options.length] = new Option(opt.options[0].text, opt.options[0].value);
(это для добавления всех из списка пробовал), у меня заработало. Для остальных сделаете по аналогии.
Ответить с цитированием
  #5 (permalink)  
Старый 10.03.2009, 14:20
Интересующийся
Отправить личное сообщение для dm1tr1y Посмотреть профиль Найти все сообщения от dm1tr1y
 
Регистрация: 06.12.2008
Сообщений: 14

О! Большое спасибо!!
Работает, спасибо!
Ответить с цитированием
  #6 (permalink)  
Старый 14.03.2009, 23:20
Интересующийся
Отправить личное сообщение для dm1tr1y Посмотреть профиль Найти все сообщения от dm1tr1y
 
Регистрация: 06.12.2008
Сообщений: 14

А вот крайне интересно, если результат выбора опций (вот этот):
<select name='list[]' id='ed_list' size='9' class='FormSize' ondblclick='del_item();'>
</select>


Я передаю методом POST на другую страницу, в PHP обработчик, то как принять результат?
$_POST['list[]'];
- не работает.. Да и вряд ли заработало бы..
Ответить с цитированием
  #7 (permalink)  
Старый 14.03.2009, 23:39
...
Отправить личное сообщение для Zibba Посмотреть профиль Найти все сообщения от Zibba
 
Регистрация: 13.10.2008
Сообщений: 225

А смысл давать select'у имя с угловыми скобками? Чем Вас другие символы не удовлетворяют!?
P.S. Я конечно не знаю, но единственное что могу посоветовать это попробовать экранировать символы ] и [
Ответить с цитированием
  #8 (permalink)  
Старый 14.03.2009, 23:51
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

dm1tr1y,
в случае такой формы в ПХП надо принимать посредством конструкции $_POST['list'][0];
кажется так
Ответить с цитированием
  #9 (permalink)  
Старый 15.03.2009, 00:00
Интересующийся
Отправить личное сообщение для dm1tr1y Посмотреть профиль Найти все сообщения от dm1tr1y
 
Регистрация: 06.12.2008
Сообщений: 14

Так. От части понял что не так.
echo $_POST['list'][0]; - выдаст первый символ того элемента, на котором стоял курсор до момента нажатия кнопки передачи данных в PHP.

echo $_POST['list']; - выводит VALUE значение выделенного элемента OPTION.

Но это как то уж очень фигово, мне то надо обрабатывать все элементы SELECT, а не только выделенный..

Последний раз редактировалось dm1tr1y, 15.03.2009 в 01:53.
Ответить с цитированием
  #10 (permalink)  
Старый 15.03.2009, 00:15
Интересующийся
Отправить личное сообщение для dm1tr1y Посмотреть профиль Найти все сообщения от dm1tr1y
 
Регистрация: 06.12.2008
Сообщений: 14

Резюме проблемы.

Вот есть у меня SELECT, куда я динамически помещено несколько элементов OPTION.
Как их получать и обрабатывать - я знаю.

Но вот как их корректно передать, без выделения каждого OPTION вручную??

Последний раз редактировалось dm1tr1y, 15.03.2009 в 01:53.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт меню не работает только в Firefox somatic Firefox/Mozilla 2 28.07.2009 03:23
Форма динамическая s4sha1 Элементы интерфейса 2 05.01.2009 17:09
GetVariable (flash) не работает под FireFox Vodan Общие вопросы Javascript 2 21.12.2008 17:26
FireFox: onmouseover не работает при зажатой кнопке мыши no. Общие вопросы Javascript 4 19.08.2008 13:43
Скрипт не работает в Opera, Firefox Faster Events/DOM/Window 2 08.08.2008 18:56