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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> (HTML) Динамическое добавление элементов в SELECT, (HTML) Динамическое добавление элементов 
:(
    Опции темы
rarelang
Дата 4.8.2004, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 15.4.2004

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



Всем привет,

Помогите мне пожалуйста решить следующую проблему, - мне нужно реализовать динамическое (при помощи JavaScript) добавление/удаление элементов в HTML элементе SELECT. Задача усложняется тем что мне нужно чтобы данная функциональность идеально работала в Mozilla и Netscape.

В принципе я реализовал требуемые функции путем простого изменения свойства innerHTML/outerHTML у элемента SELECT достукиваясь к нему через id функцией getElementById, но я столкнулся с тем что это работает только в Internet Explorer, а этот вариант мне абсолютно не подходит.

Решение работающее в Internet Explorer и не работающее в остальных браузерах привожу ниже:

Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<script language="JavaScript">
function addteg()
{
var str="<option>"+"бла бла бла"+"</option>";
document.getElementById("TEGS").outerHTML="<select id=\"TEGS\" size=\"1\">"+str+"</select>";
}
</script>
<body onLoad="addteg()">
<select id="TEGS">
</select>
</body>
</html>


Подскажите мне пожалуйста как мне реализовать требуемую функциональность в Mozilla или Netscape.

Заранее спасибо за любой ответ и отдельное огромное спасибо за пример кода.
PM MAIL   Вверх
Ignat
Дата 4.8.2004, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

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



Поищи в форуме по JavaScript, там что-то не так давно пробегало по этой теме.


--------------------
Теперь при чем :P
PM   Вверх
Aliance
Дата 4.8.2004, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


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

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



Писать нужно было в топике JavaScript.
Модераторы - перенесите!
PM MAIL WWW ICQ Skype   Вверх
Ignat
Дата 4.8.2004, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

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



Aliance
Прочитай внимательно название форума


--------------------
Теперь при чем :P
PM   Вверх
Aliance
Дата 4.8.2004, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


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

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



Ignat
Хм...если его проблема - проблемма дизайна - тогда окей...но мне почему-то так не кажется (:
PM MAIL WWW ICQ Skype   Вверх
dr.ZmeY
Дата 5.8.2004, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


Профиль
Группа: Участник Клуба
Сообщений: 3892
Регистрация: 26.3.2002
Где: ..::STALINGRAD::. .

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



М
 
перенесено



--------------------
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 5.8.2004, 03:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



У select'а есть контейнер options, которым можно манипулировать. Работать должно везде(DOM), проверенно в Мозилле и ИЕ.
Код
<select id="test">
<option>Test</option>
<option>Test</option>
<option>Test</option>
</select>
<script language="Javascript" type="text/javascript">
<!--
s=document.getElementById("test");
alert(""+s.options.length);
el=document.createElement("OPTION"); //создаем элемент option
s.options.add(el); //если добавить позднее то выйдет не понятная ошибка в ИЕ...
el.appendChild(document.createTextNode("New Test")); //ставим текст
el.value="Bla"; //и значение
//... любые другие аттрибуты
//-->
</script>



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


Шустрый
*


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

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



Ых есть идея, но влом писать sad.gif
Можно поробовать с массивами и тыгом innerHTML biggrin.gif
--------------------
PM MAIL ICQ   Вверх
Sardar
Дата 21.8.2004, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



fuckerok с innerHTML будет то же самое и возможно будет подглючивать в ИЕ.



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


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Цитата(Sardar @ 21.8.2004, 14:34)
с innerHTML будет то же самое и возможно будет подглючивать в ИЕ

Не будет! Проверено!!! :-))))


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Sardar
Дата 23.8.2004, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Цитата(GoodBoy @ 23.8.2004, 10:38)
Не будет! Проверено!!! :-))))

Нe будет больше взрыва рождаемости кроликов в Австралии ? biggrin.gif
Покажи код smile.gif


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


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Цитата(Sardar @ 23.8.2004, 17:07)
Покажи код

А я обычно верил тебе на слово... :-(((((

Код
dom = (document.getElementById) ? true : false;
nn4 = (document.layers) ? true : false;
ie = (document.all) ? true : false;
ie4 = ie && !dom;

function getRef(id) {    
if (dom) return document.getElementById(id);    
if (ie4) return document.all[id];    
if (nn4) return document.layers[id];
}

function SelectComponent(name, id, sel, wid, func) {
   var s = '<select name="'+name+'" style="width:'+(wid?wid:150)+'px" onChange="'+func+'">';
   s += '<option value=0>---</option>';
   try {
       if (id!=0 && id!='') {
           eval("var M1 = "+name+id+"1;");
           eval("var M2 = "+name+id+"2;");
           for (var i=0;i<M1.length;i++) {
               if (M1[i]!='') {
                   s += '<option value="'+M1[i]+'"'+(M1[i]==sel?" selected":"")+'>'+
                        M1[i]+' - '+M2[i]+'</option>';
               }
           }
       }
   } catch(e) {}
   s += '</select>';
   obj_span = getRef(name+"_span");
   obj_span.innerHTML = s;
}

<span name=links_span><script>SelectComponent('links', 2, 15, 300, "doChangeLink()");</script></span>

Это сообщение отредактировал(а) GoodBoy - 23.8.2004, 17:00


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Sardar
Дата 23.8.2004, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Цитата(GoodBoy @ 23.8.2004, 15:58)
А я обычно верил тебе на слово... :-(((((

Дык я тоже тебе верю на слово smile.gif просто не понял что "не будет": "то же самое" или "поглючитвать в ИЕ".
innerHTML удобная не DOM'овская фича для лентяев вроде нас smile.gif В целом вроде идеенитчна коду createElement, appendChild, только за нас это делает парсер браузера. Правда в ИЕ иногда глючит с таблицами, селектом, некоторыми формами.


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


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 21.7.2004

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



Сколько не пытался через innerHTML вставить, список пропадал в неизвестном направлении (ИЕ6). Такая простецкая конструкция глючит.
Код

<html>
<head>
<title>Untitled</title>
</head>
<body>
<select id="sel">
<option>1
<option>2
<option>3
</select>
<script>
sel.innerHTML  += "<option>4" +
 "<option>5" +
 "<option>6" +
 "<option>7";
</script>
</body>
</html>

PM MAIL   Вверх
GoodBoy
Дата 23.8.2004, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Цитата(Sardar @ 23.8.2004, 18:25)
в ИЕ иногда глючит с таблицами, селектом, некоторыми формами.

Цитата(Cache @ 23.8.2004, 18:47)
Сколько не пытался через innerHTML вставить, список пропадал в неизвестном направлении (ИЕ6). Такая простецкая конструкция глючит.

Не знаю господа, что у вас за проблемы, а приведенный мною код успешно работает на многих разработанных мною сайтах!!!! И смею заверить нареканий от заказчиков не было!!!
:-))))))))


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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