Javascript.RU

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

Проблема с select.options[]
function Replace (sel_1 , sel_2) {

from = FindSelect(sel_1); // ищутся селект строки в 1-й
where = FindSelect(sel_2); // ищутся селект строки во 2-й

j = 0;

buffer = sel_1.options[from];

for (j = from ; j <= where - 1; j++) {

sel_2.options[j] = sel_2.options[j + 1];
}

sel_2.options[where] = buffer;
}

Скрипт почему-то не работает. Точней работает но не так как нужно. в конце концов должно плучаться, что из первого селекта берется опт. и загоняется во второй. Но, блин, он из первого куда-то пропадает ((
Ответить с цитированием
  #2 (permalink)  
Старый 08.04.2008, 16:08
Новичок на форуме
Отправить личное сообщение для SPekTR Посмотреть профиль Найти все сообщения от SPekTR
 
Регистрация: 08.04.2008
Сообщений: 7

Пример:

<form name="myform">

<select name="Select" size="10" >
  <option selected="selected" > 1 </option>
  <option id="tree_1_1">1_1</option>
  <option id="tree_1_1_1"> 1_1_1</option>
  <option id="tree_1_2">1_2</option>
  <option id="tree_1_2_1">1_2_1</option>
  <option id="tree_1_2_2">1_2_2</option>
  <option id="tree_1_2_3">1_2_3</option>
</select>

<select name="select_1" size="10">
  <option id="tre_1">1</option>
  <option id="tre_1_1" selected="selected" >1_1</option>
  <option id="tre_1_1_1"> 1_1_1</option>
  <option id="tre_1_2">1_2</option>
  <option id="tre_1_2_1">1_2_1</option>
  <option id="tre_1_2_2">1_2_2</option>
  <option id="tre_1_2_3">1_2_3</option>
</select>

<input id="text_test1" name="text_test1" value="123" type="text" />    // сюда водится индекс оптиона из первого
<input name="but_1" type="button" value="find" onclick="this.form.select_1.options[this.form.text_test2.value] = this.form.Select.options[this.form.text_test1.value]"/>
<input id="text_test2" name="text_test2" value="123" type="text" />   // сюда водится индекс оптиона из второго

</form>


в общем как видите из первого селекта после переноса выбраный оптион пропадает. Как эту беду исправить?

Последний раз редактировалось SPekTR, 08.04.2008 в 16:10. Причина: ввод пояснений
Ответить с цитированием
  #3 (permalink)  
Старый 08.04.2008, 17:01
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

SPekTR, объкты при операциях передаются по ссылке. В данном случае - тоже операция - присвоением ты именно перенес option, поскольку это объект. Если нужна копия, то посмотри объект Option (твойСелект.options[твойСелект.options.length] = new Option(тext, text))
Ответить с цитированием
  #4 (permalink)  
Старый 08.04.2008, 17:25
Новичок на форуме
Отправить личное сообщение для SPekTR Посмотреть профиль Найти все сообщения от SPekTR
 
Регистрация: 08.04.2008
Сообщений: 7

тоесть он кинется только в конец списка? фигово...
Подскажи тогда, что лучше использовать. В двух окнах будет дерево, нужна копия из одного дерева в другое, на определенную позицию
Ответить с цитированием
  #5 (permalink)  
Старый 08.04.2008, 17:32
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

SPekTR,

> тоесть он кинется только в конец списка? фигово...

почему это? то, что я написал такой индекс (options[твойСелект.options.length] - т.е. в конец добавится), так это только для примера. Пожалуйста, используй любой (свой - options[this.form.text_test2.value])

this.form.select_1.options[this.form.text_test2.value] = new Option(this.form.Select.options[this.form.text_test1.value].text, this.form.Select.options[this.form.text_test1.value].value)
Ответить с цитированием
  #6 (permalink)  
Старый 08.04.2008, 17:48
Новичок на форуме
Отправить личное сообщение для SPekTR Посмотреть профиль Найти все сообщения от SPekTR
 
Регистрация: 08.04.2008
Сообщений: 7

тогда он заменит оптион который стоит на этом месте... правильно понимаю?
Ответить с цитированием
  #7 (permalink)  
Старый 08.04.2008, 17:54
Новичок на форуме
Отправить личное сообщение для SPekTR Посмотреть профиль Найти все сообщения от SPekTR
 
Регистрация: 08.04.2008
Сообщений: 7

а еще один вопрос, как выдернуть из стиля цвет фона?
(не понятно что писать).названиеСтиля.backgroun dColor

нужен указатель именно на стиль, что бы когда он меняется не приходилось скрипт переписывать
Ответить с цитированием
  #8 (permalink)  
Старый 09.04.2008, 12:58
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от SPekTR
а еще один вопрос, как выдернуть из стиля цвет фона?
(не понятно что писать).названиеСтиля.backgroun dColor
- если стиль определен через атрибут (или свойство) style, то так и возвращать - объект.style.нужноеСвойствоС иля

- если определен через css-класс, то посмотри объект.currentStyle[нужноеСвойствоСтиля] (IE, Opera) и window.getComputedStyle(объект, '').getPropertyValue(нужноеСвойство тиля); (или document.defaultView.getComputedStyle(объект , '').getPropertyValue(нужноеСвойство тиля);) (FF)

P.S.: в личку тоже ответил
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с document.location daniel20 Общие вопросы Javascript 7 19.09.2008 14:07
проблема с обработкой DIV nerik AJAX и COMET 2 22.08.2008 17:40
Проблема с меню 856 Общие вопросы Javascript 3 28.07.2008 14:29
Проблема с маркером kostian02 Общие вопросы Javascript 0 23.06.2008 16:10
проблема с передачей русского текста в Prototype subaru Prototype & script.aculo.us 2 26.07.2007 16:56