Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Выделение строки <select> при выборе другого <select> (https://javascript.ru/forum/dom-window/3583-vydelenie-stroki-select-pri-vybore-drugogo-select.html)

simbion 04.05.2009 23:23

Выделение строки <select> при выборе другого <select>
 
Как сделать чтобы при выборе значения <select> выделялась соответствующая строка в другом (в третьем, в четвертом и.т.д) списке <select>. Например: Если выбираешь например в списке пункт "Яблоко" соответствующее "Яблоко" из дугих списков выделялись тоже?

Это нужно для массового смена статуса заказов!
:yes:
Будет очень удобно...

simbion 05.05.2009 00:08

Должно получится что-то вроде этого,
только при выборе значения главного списка,
должны выбираться соответствующие значения
у всех списков, а не только у первого после главного...
<script type="text/javascript">
var SelectOnChange = function(selected) {
    var option = document.getElementById('proverka').options[selected.value-1];
    option.selected = !option.selected;
};
</script>
<form>
<select onChange="SelectOnChange(this);">
<option value='1'>Яблоко</option>
<option value='2'>Груша</option>
<option value='3'>Тыква</option>		
</select>
<select id="proverka">
<option value='1'>Яблоко</option>
<option value='2'>Груша</option>
<option value='3'>Тыква</option>		
</select>
<select id="proverka">
<option value='1'>Яблоко</option>
<option value='2'>Груша</option>
<option value='3'>Тыква</option>		
</select>
</form>

x-yuri 05.05.2009 00:37

nextSibling - ссылка на следующий элемент
tagName - название тэга элемента

simbion 05.05.2009 00:46

Цитата:

Сообщение от x-yuri (Сообщение 18237)
nextSibling - ссылка на следующий элемент
tagName - название тэга элемента

x-yuri, я в javascript ничего не смыслю:(
Не мог ты на примере показать.... А то я не разберусь...

x-yuri 05.05.2009 01:04

Цитата:

x-yuri, я в javascript ничего не смыслю
может вообще в программировании? Для решения задачи нужно еще знать, что такое while
спрашивай, что непонятно, а не "напишите за меня", показывай свои варианты

simbion 05.05.2009 01:07

Цитата:

Сообщение от x-yuri (Сообщение 18243)
может вообще в программировании? Для решения задачи нужно еще знать, что такое while
спрашивай, что непонятно, а не "напишите за меня", показывай свои варианты

вообще-то ты прав - в программировании ничего не понимаю... Про цикл while слышал, т.к. приходилось править php. html знаю, вот и все...
Птому сюда и забрел по поиску..
Надеялся найти помощь...
Если чем-то обидел - прости.. Не хотел...

x-yuri 05.05.2009 02:07

Цитата:

Если чем-то обидел - прости.. Не хотел...
у тебя не получилось ;)

ну давай попробуем разобраться
в SelectOnChange передается главный элемент (переменная selected)
каркас выглядит так
function SelectOnChange(selected) {

    // создаем переменную и помещаем в нее следующий элемент
    while( /* существует следующий элемент */ ) {
        if( /* текущий элемент - select */ ) {
            // изменить текущее значение в текущем select
        }
    }
}

var a = 123 // создание переменной a и присваивание ей 
// 123 (инициализация не обязательна)
el.nextSibling // следующий элемент по отношению к 
// элементу, хранящемуся в переменной el
el.nextSibling.nextSibling // можно найти элемент 
// через 1 от текущего
el.selectedIndex // номер option, 
// выбранного в select
el.tagName // название тэга элемента el, 
// записанное прописными буквами
if( el.nextSibling ) ... // если существует 
// следующий элемент

Riim 05.05.2009 02:13

Цитата:

Сообщение от x-yuri
el.nextSibling

А что мучиться? Тупо задать всем нужным select-ам, какой ни будь class, и выбирать их по нему.

x-yuri 05.05.2009 02:26

Цитата:

Тупо задать всем нужным select-ам, какой ни будь class, и выбирать их по нему
тоже вариант :)

simbion 05.05.2009 02:32

Буду разбираться с наисанным выше кодом.
Завтра отпишу что получилось, а что нет.
x-yuri, спасибо за подробный ответ!

simbion 05.05.2009 02:33

Riim,
ты имеешь ввиду, это можно сделать через таблицу стилей?

Riim 05.05.2009 02:43

Вот, нормально вроде: http://ejohn.org/blog/getelementsbyc...ed-comparison/

simbion 05.05.2009 03:43

Цитата:

Сообщение от Riim (Сообщение 18270)
Вот, нормально вроде: http://ejohn.org/blog/getelementsbyc...ed-comparison/

А как это применить в моем случае?
Моих 0-х познаний явно будет недостаточно...
Потыкал, потыкал... А ничего не выходит...:(

The Ultimate getElementsByClassName
http://www.robertnyman.com/2005/11/0...tsbyclassname/
function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : 
        oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}


Dustin Diaz's getElementsByClass
http://www.dustindiaz.com/getelementsbyclass
function getElementsByClass(searchClass,node,tag) {
        var classElements = new Array();
        if ( node == null )
                node = document;
        if ( tag == null )
                tag = '*';
        var els = node.getElementsByTagName(tag);
        var elsLen = els.length;
        var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
        for (i = 0, j = 0; i < elsLen; i++) {
                if ( pattern.test(els[i].className) ) {
                        classElements[j] = els[i];
                        j++;
                }
        }
        return classElements;
}


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