Динамическая 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> |
Ну еще бы
opt.options[0].textА счетчик цикла тогда зачем? (i) . Копайте в этом направлении. |
Счетчик цикла тут потому, что я N раз обрабатываю нулевой элемент.
Это сделано затем, что без этого - получается динамически изменяемый массив. Ну, грубо говоря, если у меня надо обработать 4 элемента (0, 1, 2, 3), то после нескольких итераций количество элементов изменится и, например, на второй итерации, элемент имевший первоначальный номер 3 будет уже 1м. И обработать элемент массива 3 - уже не получится. |
Посмотерл,
opt2.appendChild(o);не хочет работать в IE :/ попробуйте делать так: opt2.options[opt2.options.length] = new Option(opt.options[0].text, opt.options[0].value);(это для добавления всех из списка пробовал), у меня заработало. Для остальных сделаете по аналогии. |
О! Большое спасибо!!
Работает, спасибо! |
А вот крайне интересно, если результат выбора опций (вот этот):
<select name='list[]' id='ed_list' size='9' class='FormSize' ondblclick='del_item();'> </select> Я передаю методом POST на другую страницу, в PHP обработчик, то как принять результат? $_POST['list[]'];- не работает.. Да и вряд ли заработало бы.. |
А смысл давать select'у имя с угловыми скобками? Чем Вас другие символы не удовлетворяют!?
P.S. Я конечно не знаю, но единственное что могу посоветовать это попробовать экранировать символы ] и [ |
dm1tr1y,
в случае такой формы в ПХП надо принимать посредством конструкции $_POST['list'][0]; кажется так |
Так. От части понял что не так.
echo $_POST['list'][0]; - выдаст первый символ того элемента, на котором стоял курсор до момента нажатия кнопки передачи данных в PHP. echo $_POST['list']; - выводит VALUE значение выделенного элемента OPTION. Но это как то уж очень фигово, мне то надо обрабатывать все элементы SELECT, а не только выделенный.. :( |
Резюме проблемы.
Вот есть у меня SELECT, куда я динамически помещено несколько элементов OPTION. Как их получать и обрабатывать - я знаю. Но вот как их корректно передать, без выделения каждого OPTION вручную?? |
Часовой пояс GMT +3, время: 20:24. |