Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перекинуть элемент из одного списка в другой, добавить, убрать опции из select'а 
:(
    Опции темы
GePo
Дата 19.4.2005, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 30.3.2003
Где: Москва

Репутация: нет
Всего: 3



Есть два списка(select), между ними две кнопки ">>","<<"(вправо, влево). По нажатию на соответвующую кнопку выделенынй элемент(если выделен) в соответвующем списке должен перемещаться в другой. Возможно ли это реализовать на JavaScript и как?
--------------------
PM MAIL WWW   Вверх
batigoal
Дата 19.4.2005, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 1
Всего: 151



Конечно, можно. Например, так:
Код

<html>
<head>
<script>
function moveRight()
{
 var first = document.getElementById("first");
 var second = document.getElementById("second");
 if(first.selectedIndex!=-1)
 {
   second.options[second.options.length] = new Option(first.options[first.selectedIndex].text);
   for(var i = first.selectedIndex; i<first.options.length-1; i++)
   {
     first.options[i].text = first.options[i+1].text;
   }
   first.options.length = first.options.length-1;
 }
}
function moveLeft()
{
 var first = document.getElementById("first");
 var second = document.getElementById("second");
 if(second.selectedIndex!=-1)
 {
   first.options[first.options.length] = new Option(second.options[second.selectedIndex].text);
   for(var i = second.selectedIndex; i<second.options.length-1; i++)
   {
     second.options[i].text = second.options[i+1].text;
   }
   second.options.length = second.options.length-1;
 }
}
</script>
</head>
 <body>
  <div align="center">
   <select id="first" size="7">
    <option>one</option>
    <option>two</option>
    <option>three</option>
   </select>
   <select id="second" size="7">
    <option>four</option>
    <option>five</option>
    <option>six</option>
   </select>
   <br>
   <input type="button" onClick="moveLeft()" value="<<">
   <input type="button" onClick="moveRight()" value=">>">
  </div>
 </body>
</html>


Учти, код упрощенный.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Aliance
Дата 19.4.2005, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Вот сам алгоритм динамической подмены значений в вып. списке:
смотреть
PM MAIL WWW ICQ Skype   Вверх
GePo
Дата 19.4.2005, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 30.3.2003
Где: Москва

Репутация: нет
Всего: 3



Lamer George
спасибо, прямо в точку.
--------------------
PM MAIL WWW   Вверх
batigoal
Дата 19.4.2005, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 1
Всего: 151



Не за что smile . Но повторяю еще раз - для реального использования код надо доработать. Как минимум, учесть, что работать надо не только с options[i].text, но и с options[i].value.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Sardar
Дата 19.4.2005, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Можно еще проще:
Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<script>
function moveRight() {
 var first = document.getElementById("first");
 var second = document.getElementById("second");
 if(first.selectedIndex!=-1)
   second.appendChild(first.removeChild(first.options[first.selectedIndex]));
}
function moveLeft(){
 var first = document.getElementById("first");
 var second = document.getElementById("second");
 if(second.selectedIndex!=-1)
   first.appendChild(second.removeChild(second.options[second.selectedIndex]));
}
</script>
</head>
 <body>
  <div align="center">
   <select id="first" size="7">
    <option>one</option>
    <option>two</option>
    <option>three</option>
   </select>
   <select id="second" size="7">
    <option>four</option>
    <option>five</option>
    <option>six</option>
   </select>
   <br>
   <input type="button" onClick="moveLeft()" value="<<">
   <input type="button" onClick="moveRight()" value=">>">
  </div>
 </body>
</html>



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
batigoal
Дата 19.4.2005, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 1
Всего: 151



Да и пограмотней заодно...


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0498 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.