Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 14.08.2015, 20:04
Интересующийся
Отправить личное сообщение для oneplus Посмотреть профиль Найти все сообщения от oneplus
 
Регистрация: 25.05.2015
Сообщений: 24

Поэкспериментировал с классами "premium metal" - открыл много нового
Задача следующая: Как работать с уже сформированным списком?
В первом списке я выбираю материал, список моделей фурнитуры собирается.
Затем мне нужно сделать выборку по этому списку, то есть работать с уже сформированным.
Как это реализовать?
Как сохранить селект лист сформированных оптионов, например в цикле фор, что бы потом с ним работать?
Пытался сделать, что то вроде этого:
var mat=document.getElementById("vl_mat_id"),
    sor=document.getElementById("vl_sort_id"),
    tex=document.getElementById("vl_tex_id"),
    tex_c=tex.cloneNode(true),
    tex_co=tex_c.getElementsByTagName("option"), sp, spc;
function f() {
  var m=mat.options[mat.selectedIndex].className;
  while (tex.options.length) {tex.remove(0)};
  for (var i=0; i<tex_co.length;i++) {  
  if (tex_co[i].className.match(m)) {
    tex.appendChild(tex_co[i].cloneNode(true));
    sp=tex_co[i].cloneNode(true);
    spc=sp.getElementsByTagName("option");
  };  
  }
}
mat.onchange=f;
function p() {
  var f=sor.options[sor.selectedIndex].className;
  while (tex.options.length) {tex.remove(0)};
  for (var i=0; i<spc.length;i++) {
  if (spc[i].className.match(f)) {tex.appendChild(spc[i].cloneNode(true))};
  }
}
sor.onchange=p;

Список сформировывается и я его записываю, затем работаю только с ним.
Только то, что написал не работает. Не записывает. Почему?
Ответить с цитированием
  #12 (permalink)  
Старый 14.08.2015, 20:10
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 458

oneplus, имена переменным, функциям и классам надо осмысленные давать (как className, appendChild, cloneNode), чтобы было понятно о чем речь, а не просто букавки.

Последний раз редактировалось Rise, 14.08.2015 в 20:13.
Ответить с цитированием
  #13 (permalink)  
Старый 14.08.2015, 20:21
Интересующийся
Отправить личное сообщение для oneplus Посмотреть профиль Найти все сообщения от oneplus
 
Регистрация: 25.05.2015
Сообщений: 24

Прошу прощение, действительно не информативно.
var mat=document.getElementById("vl_mat_id"),//первый список - материалы
    sor=document.getElementById("vl_sort_id"),//второй список - выборка
    tex=document.getElementById("vl_tex_id"),//третий список - фактура
    tex_c=tex.cloneNode(true),
    tex_co=tex_c.getElementsByTagName("option"), 
//тех_цо-клонированный список фактуры
    sp, spc;//спц-клонированный список новосформированного
//функция при выборе материала
function f() {
//класс материала
  var m=mat.options[mat.selectedIndex].className;
//удаляем список
  while (tex.options.length) {tex.remove(0)};
//возвращаем список с нужным классом
  for (var i=0; i<tex_co.length;i++) {  
  if (tex_co[i].className.match(m)) {
    tex.appendChild(tex_co[i].cloneNode(true));
//записываем список для дальнейшего использования
    sp=tex_co[i].cloneNode(true);
    spc=sp.getElementsByTagName("option");
  };  
  }
}
mat.onchange=f;
//функция для работы второго списка-выборки
function p() {
//класс выборки или сортировки
  var f=sor.options[sor.selectedIndex].className;
//удаляем старый список
  while (tex.options.length) {tex.remove(0)};
//возвращаем нужный список из ранее сохраненного
  for (var i=0; i<spc.length;i++) {
  if (spc[i].className.match(f)) {tex.appendChild(spc[i].cloneNode(true))};
  }
}
sor.onchange=p;
Ответить с цитированием
  #14 (permalink)  
Старый 14.08.2015, 20:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

oneplus,
пример на js
Как связать два списка на Javascript?
Ответить с цитированием
  #15 (permalink)  
Старый 14.08.2015, 20:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Сообщение от oneplus
//удаляем список13 while (tex.options.length) {tex.remove(0)};
tex.options.length=0
Ответить с цитированием
  #16 (permalink)  
Старый 14.08.2015, 22:08
Интересующийся
Отправить личное сообщение для oneplus Посмотреть профиль Найти все сообщения от oneplus
 
Регистрация: 25.05.2015
Сообщений: 24

постарался разобрать пример связанных селектов
http://javascript.ru/forum/dom-windo...tml#post231937
правильно понимаю, сформированный список получится сохранить только через массив?
вот этот список:
for (var i=0; i<tex_co.length;i++) {  
if (tex_co[i].className.match(m)) {tex.appendChild(tex_co[i].cloneNode(true))};

для этого нужно писать еще цикл?
Ответить с цитированием
  #17 (permalink)  
Старый 14.08.2015, 22:20
Интересующийся
Отправить личное сообщение для oneplus Посмотреть профиль Найти все сообщения от oneplus
 
Регистрация: 25.05.2015
Сообщений: 24

Дописал так в первой функции f:
sp=tex.cloneNode(true);
spc=sp.getElementsByTagName("option");

Возможно это не совсем правильно, но работает.
Ответить с цитированием
  #18 (permalink)  
Старый 14.08.2015, 22:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

oneplus,
что и как вы пишите мне неизвестно, подсказать не могу.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простой динамический список vasiliy_shkolniy Элементы интерфейса 34 05.07.2013 09:10
Динамический список элементов формы lar_i_sa Общие вопросы Javascript 0 08.03.2013 15:27
селект переделанный под список Vasёk18 Элементы интерфейса 0 13.04.2012 23:49
Динамический список djsadd Internet Explorer 1 13.04.2012 01:35
Динамический список из DIV`ов и INPUT`ов Andrew_li jQuery 5 09.06.2011 15:23