Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с select.options[] (https://javascript.ru/forum/misc/1144-problema-s-select-options%5B%5D.html)

SPekTR 08.04.2008 14:32

Проблема с 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;
}

Скрипт почему-то не работает. Точней работает но не так как нужно. в конце концов должно плучаться, что из первого селекта берется опт. и загоняется во второй. Но, блин, он из первого куда-то пропадает ((

SPekTR 08.04.2008 16:08

Пример:

<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>


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

Dmitry A. Soshnikov 08.04.2008 17:01

SPekTR, объкты при операциях передаются по ссылке. В данном случае - тоже операция - присвоением ты именно перенес option, поскольку это объект. Если нужна копия, то посмотри объект Option (твойСелект.options[твойСелект.options.length] = new Option(тext, text))

SPekTR 08.04.2008 17:25

тоесть он кинется только в конец списка? фигово...
Подскажи тогда, что лучше использовать. В двух окнах будет дерево, нужна копия из одного дерева в другое, на определенную позицию

Dmitry A. Soshnikov 08.04.2008 17:32

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)

SPekTR 08.04.2008 17:48

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

SPekTR 08.04.2008 17:54

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

нужен указатель именно на стиль, что бы когда он меняется не приходилось скрипт переписывать

Dmitry A. Soshnikov 09.04.2008 12:58

Цитата:

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

- если стиль определен через атрибут (или свойство) style, то так и возвращать - объект.style.нужноеСвойствоС� �иля

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

P.S.: в личку тоже ответил


Часовой пояс GMT +3, время: 04:01.