10.03.2009, 00:23
|
Интересующийся
|
|
Регистрация: 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='>' type='button' onclick='add_num_item();'><br>
<input name='add' class='ButtonSize2' value='>' type='button' onclick='add_item();'><br>
<input name='add' class='ButtonSize2' value='>>' type='button' onclick='add_all_item();'><br>
<input name='del' class='ButtonSize2' value='<<' type='button' onclick='del_all_item();'><br>
<input name='del' class='ButtonSize2' value='<' type='button' onclick='del_item();'><br>
<input name='del' class='ButtonSize1' value='<' 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>
|
|
10.03.2009, 07:34
|
...
|
|
Регистрация: 13.10.2008
Сообщений: 225
|
|
Ну еще бы
opt.options[0].text
А счетчик цикла тогда зачем? (i) . Копайте в этом направлении.
Последний раз редактировалось Zibba, 10.03.2009 в 08:15.
|
|
10.03.2009, 13:43
|
Интересующийся
|
|
Регистрация: 06.12.2008
Сообщений: 14
|
|
Счетчик цикла тут потому, что я N раз обрабатываю нулевой элемент.
Это сделано затем, что без этого - получается динамически изменяемый массив.
Ну, грубо говоря, если у меня надо обработать 4 элемента (0, 1, 2, 3), то после нескольких итераций количество элементов изменится и, например, на второй итерации, элемент имевший первоначальный номер 3 будет уже 1м. И обработать элемент массива 3 - уже не получится.
|
|
10.03.2009, 13:59
|
...
|
|
Регистрация: 13.10.2008
Сообщений: 225
|
|
Посмотерл,
opt2.appendChild(o);
не хочет работать в IE :/ попробуйте делать так:
opt2.options[opt2.options.length] = new Option(opt.options[0].text, opt.options[0].value);
(это для добавления всех из списка пробовал), у меня заработало. Для остальных сделаете по аналогии.
|
|
10.03.2009, 14:20
|
Интересующийся
|
|
Регистрация: 06.12.2008
Сообщений: 14
|
|
О! Большое спасибо!!
Работает, спасибо!
|
|
14.03.2009, 23:20
|
Интересующийся
|
|
Регистрация: 06.12.2008
Сообщений: 14
|
|
А вот крайне интересно, если результат выбора опций (вот этот):
<select name='list[]' id='ed_list' size='9' class='FormSize' ondblclick='del_item();'>
</select>
Я передаю методом POST на другую страницу, в PHP обработчик, то как принять результат?
$_POST['list[]'];
- не работает.. Да и вряд ли заработало бы..
|
|
14.03.2009, 23:39
|
...
|
|
Регистрация: 13.10.2008
Сообщений: 225
|
|
А смысл давать select'у имя с угловыми скобками? Чем Вас другие символы не удовлетворяют!?
P.S. Я конечно не знаю, но единственное что могу посоветовать это попробовать экранировать символы ] и [
|
|
14.03.2009, 23:51
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
dm1tr1y,
в случае такой формы в ПХП надо принимать посредством конструкции $_POST['list'][0];
кажется так
|
|
15.03.2009, 00:00
|
Интересующийся
|
|
Регистрация: 06.12.2008
Сообщений: 14
|
|
Так. От части понял что не так.
echo $_POST['list'][0]; - выдаст первый символ того элемента, на котором стоял курсор до момента нажатия кнопки передачи данных в PHP.
echo $_POST['list']; - выводит VALUE значение выделенного элемента OPTION.
Но это как то уж очень фигово, мне то надо обрабатывать все элементы SELECT, а не только выделенный..
Последний раз редактировалось dm1tr1y, 15.03.2009 в 01:53.
|
|
15.03.2009, 00:15
|
Интересующийся
|
|
Регистрация: 06.12.2008
Сообщений: 14
|
|
Резюме проблемы.
Вот есть у меня SELECT, куда я динамически помещено несколько элементов OPTION.
Как их получать и обрабатывать - я знаю.
Но вот как их корректно передать, без выделения каждого OPTION вручную??
Последний раз редактировалось dm1tr1y, 15.03.2009 в 01:53.
|
|
|
|