Javascript.RU

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

получение некого value и вывод его в определенный блок div
Суть вопроса такова есть 4 select-а (зависимые списки), вот они:
<script type="text/javascript">


/*
wwww.tigir.com (дата последней модификации - 30.11.2007)
Библиотека linkedselect.js из статьи "Javascript SELECT - динамические списки" - http://www.tigir.com/linked_select.htm

syncList - "класс" связанных списков
*/
function syncList(){} //Определяем функцию конструктор

//Определяем методы

//Метод sync() - принимает список из значений атрибутов id элементов SELECT, образующих связанный список и запускает их синхронизацию
syncList.prototype.sync = function()
{
	//Перебираем аргументы (id элементов SELECT) и назначаем событиям onChange селектов, с соответствующими id, функцию-обработчик. 
	//В качестве обработчика выступает второй метод объекта syncList - _sync (напрямую его вызывать не нужно) 
	//Обработчик назначается всем элементам SELECT кроме последнего в списке аргументов, т.к. последний не влияет ни на какой другой элемент SELECT и с ним не нужно синхронизироваться.
	for (var i=0; i < arguments.length-1; i++)	document.getElementById(arguments[i]).onchange = (function (o,id1,id2){return function(){o._sync(id1,id2);};})(this, arguments[i], arguments[i+1]);
	document.getElementById(arguments[0]).onchange();//запускаем обработчик onchange первого селекта, чтобы при загрузке страницы заполнить дочерние селекты значениями.
}
//служебный метод _sync - срабатывает при смене выбранного элемента в текущем (старшем) элементе SELECT (по его событию onChange) и изменяет содержимое зависимого селекта на основании значения выбранного в старшем селекте.
syncList.prototype._sync = function (firstSelectId, secondSelectId)
{
	var firstSelect = document.getElementById(firstSelectId);
	var secondSelect = document.getElementById(secondSelectId);

	secondSelect.length = 0; //обнуляем второй (подчиненный) SELECT
	
	if (firstSelect.length>0)//если первый (старший) SELECT не пуст
	{
		//из свойства dataList, с данными для заполнения подчиненных селектов, берем ту часть данных, которая соответствует именно значению элемента, 
		//выбранного в первом селекте, и определяет содержимое подчиненного элемента SELECT.
		var optionData = this.dataList[ firstSelect.options[firstSelect.selectedIndex==-1 ? 0 : firstSelect.selectedIndex].value ];
		//заполняем второй (подчиненный) селект значениями (создаем элементы option)
		for (var key in optionData || null) secondSelect.options[secondSelect.length] = new Option(optionData[key], key);
		
		//если в старшем SELECT-е нет выделенного пункта, выделяем первый
		if (firstSelect.selectedIndex == -1) setTimeout( function(){ firstSelect.options[0].selected = true;}, 1 );
		//если во втором списке нет выделенного пункта, выделяем первый его пункт
		if (secondSelect.length>0) setTimeout( function(){ secondSelect.options[0].selected = true;}, 1 );
	}
	//если второй (подчиненный) селект имеет в свою очередь свои подчиненные селекты (те, для которых он главный), 
	//то запускаем его обработчик onchange, чтобы изменить его подчиненные селекты
	secondSelect.onchange && secondSelect.onchange();
};
var rezult = $("#List4").val();
$('#itog').val(rezult);
</script>
</head>
<body>

<div>
<form>
  <label>Страна</label><br />
  <select id="List1">
<!-- Первый (главный) список (изначально заполнен вручную) -->
       <option value="ax0"> Выберите страну </option>
       <option value="ax1">Абхазия</option>
	   <option value="ax185">Россия</option>
</select>
  <!-- Подчиненный список 1 (изначально пуст) -->
<select size="1" id="List2" name="a2"></select>
<!-- Подчиненный список 2 (изначально пуст) -->
<select size="1" id="List3" name="a3"></select>
<!-- Подчиненный список 2 (изначально пуст) -->
<select size="1" id="List4" name="a3"></select>
  </div>
<div id="itog"></div>
<div>
<script type="text/javascript" src="js/many.js"></script>


а вот скрипт к нему из файла many.js

// Создаем новый объект связанных списков
var syncList1 = new syncList;

// Определяем значения подчиненных списков (2 и 3 селектов)
syncList1.dataList = {

/* Определяем элементы второго списка в зависимости 
от выбранного значения в первом списке */
//////////////////////////////////
/// Варианты 2-го уровня списка///
//////////////////////////////////
//////////////////////////////////
///Выбор года для Абхазия/////////
//////////////////////////////////
'ax1':{'ax1_2017':'2017', 'ax1_2016':'2016'},
'ax185':{'ax185_2017':'2017', 'ax185_2016':'2016', 'ax185_2015':'2015'},
//////////////////////////////////
/// Варианты 3-го уровня списка///
//////////////////////////////////
'ax2_2017':{'ax2-0':'Выберите из списка', 'ax2-1':'Московский монетный двор (ММД)', 'ax2-2':'Санкт-Петербургский монетный двор (СПМД)'},
'ax185_2017':{'ax185-0':'Выберите из списка', 'ax185-1':'Московский монетный двор (ММД)', 'ax185-2':'Санкт-Петербургский монетный двор (СПМД)'},
'ax1-1':{'ax1ax0':'Выберите из списка', 'ax1ax1':'3 рубля Монастырь Сурб-Хач, Республика Крым', 'ax1ax2':'25 рублей Дворцово-парковый ансамбль "Нескучное", г. Москва'},
'ax185-1':{'ax185ax0':'Выберите из списка', 'ax185ax1':'3 рубля Монастырь Сурб-Хач, Республика Крым', 'ax185ax2':'25 рублей Дворцово-парковый ансамбль "Нескучное", г. Москва', 'ax185ax3':'2 рубля Географ П.П. Семёнов-Тян-Шанский, к 190-летию со дня рождения', 'ax185ax4':'10 рублей регулярной чеканки', 'ax185ax5':'5 рублей регулярной чеканки', 'ax185ax6':'2 рубля регулярной чеканки', 'ax185ax7':'1 рубль регулярной чеканки'},
'ax1-2':{'ax1ax0':'Выберите из списка', },
'ax185-2':{'ax185ax0':'Выберите из списка', }
};
// Включаем синхронизацию связанных списков
syncList1.sync("List1","List2","List3","List4");
// тут еще все норм работает а вот дальше почему-то ни ошибки нету и не выводится вопрос что ни так делаю
var rezult = $("#List4").val();
$('#itog').val(rezult);
$(document).ready(function(){
$('#List4').on('click', function() {
if(rezult == 'ax185ax1') {
	$('#itog').html('<table id="t"><tbody><caption>3 рубля Монастырь Сурб-Хач, Республика Крым</caption><tr class="x1"><th class="a1">Год</hd><th class="a2">Страна</hd><th class="a3">Номинал</hd><th class="a4">Наименование</hd><th class="a5">Дата</hd><th class="a1">Год</th></tr><tr class="z1"><td class="a1">2017</td><td class="a2-1">Россия</td><td class="a3-1">3 рубля</td><td class="a4-1" id="zoom">Монастырь Сурб-Хач, Республика Крым<span><h4>Монастырь Сурб-Хач, Республика Крым</h4><img id="foto" src="images/99.png" alt="Аверс"><img id="foto" height="235px" width="235px" src="images/100.png" alt="Реверс"><table id="t1"><tr  id="x2"><td>Номинал</td><td>3 рубля</td></tr><tr  id="x2"><td>Качество</td><td>пруф</td></tr><tr  id="x2"><td>Металл, проба</td><td>серебро 925/1000</td></tr><tr  id="x2"><td>Масса общая, г</td><td>33,94 (±0,31)</td></tr><tr  id="x2"><td>Содержание химически чистого металла не менее, г</td><td>31,10</td></tr><tr  id="x2"><td>Диаметр, мм</td><td>39,00 (±0,30)</td></tr><tr  id="x2"><td>Толщина, мм</td><td>3,30 (±0,35)</td></tr><tr  id="x2"><td>Оформление гурта:</td><td>300 рифлений</td></tr><tr  id="x2"><td>Тираж, шт.</td><td>5000 шт</td></tr><tr  id="x2"><td>Дата выпуска:</td><td>01.03.2017</td></tr><tr  id="x2"><td>Чеканка:</td><td>Московский монетный двор (ММД)</td></tr><tr  id="x2"><td>Каталожный номер:</td><td>5111-0357</td></tr></table></span></td><td class="a5-1">01.03.2017</td><td class="a1">2017</td></tr></tbody></table>');
}
});
});


так вот вопрос что нетак и как сделать так чтоб при смене выбора контент не просто добавлялся а старый выбор убирался а новый появлялся
Ответить с цитированием
  #2 (permalink)  
Старый 22.03.2017, 17:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Sprutenok000
если в старшем SELECT-е нет выделенного пункта, выделяем первый
Как это понять, если списки связанные и "младшие" списки управляются "старшими"?
Ответить с цитированием
  #3 (permalink)  
Старый 22.03.2017, 17:23
Аспирант
Отправить личное сообщение для Sprutenok000 Посмотреть профиль Найти все сообщения от Sprutenok000
 
Регистрация: 11.03.2017
Сообщений: 42

низнаю это скрипт взятый с интернета и он работает нормально а вот после строки
syncList1.sync("List1","List2","List3","List4");


уже мои дороботки я пытаюсь через List4 вывести некий код HTML в #itog
Ответить с цитированием
  #4 (permalink)  
Старый 22.03.2017, 18:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Sprutenok000
он работает нормально
Более глупого, чем это, в контексте "связанные списки" еще не видел.
Ответить с цитированием
  #5 (permalink)  
Старый 22.03.2017, 19:21
Аспирант
Отправить личное сообщение для Sprutenok000 Посмотреть профиль Найти все сообщения от Sprutenok000
 
Регистрация: 11.03.2017
Сообщений: 42

я же написал скрипт взят из интернета
Ответить с цитированием
  #6 (permalink)  
Старый 22.03.2017, 20:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Sprutenok000
скрипт взят из интернета
и что, это же не означает что это шедевр.

Связанные списки - выбор в любом из них очищает списки следующие ниже по уровню и обновление следующего за текущим списком. Выбор последнего, это цель. Таймер в контексте списков используют для задержки между запросами сервера, к чему он в приведенном нужен, где данные для списков готовым объектом представлены...
Ответить с цитированием
  #7 (permalink)  
Старый 22.03.2017, 21:38
Аспирант
Отправить личное сообщение для Sprutenok000 Посмотреть профиль Найти все сообщения от Sprutenok000
 
Регистрация: 11.03.2017
Сообщений: 42

а что это?
'ax1':{'ax1_2017':'2017', 'ax1_2016':'2016'},
'ax185':{'ax185_2017':'2017', 'ax185_2016':'2016'},
'ax1_2017':{'ax2-0':'Выберите из списка', 'ax1-1':'Московский монетный двор (ММД)', 'ax1-2':'Санкт-Петербургский монетный двор (СПМД)'},
'ax185_2017':{'ax185-0':'Выберите из списка', 'ax185-1':'Московский монетный двор (ММД)', 'ax185-2':'Санкт-Петербургский монетный двор (СПМД)'},
'ax1-1':{'ax1ax0':'Выберите из списка', 'ax1ax1':'3 рубля Монастырь Сурб-Хач, Республика Крым', 'ax1ax2':'25 рублей Дворцово-парковый ансамбль "Нескучное", г. Москва', 'ax1ax3':'2 рубля Географ П.П. Семёнов-Тян-Шанский, к 190-летию со дня рождения', 'ax1ax4':'10 рублей регулярной чеканки', 'ax1ax5':'5 рублей регулярной чеканки', 'ax1ax6':'2 рубля регулярной чеканки', 'ax1ax7':'1 рубль регулярной чеканки'},
'ax1-2':{'ax1ax0':'Выберите из списка', },
'ax185-1':{'ax185ax0':'Выберите из списка', 'ax185ax1':'3 рубля Монастырь Сурб-Хач, Республика Крым', 'ax185ax2':'25 рублей Дворцово-парковый ансамбль "Нескучное", г. Москва', 'ax185ax3':'2 рубля Географ П.П. Семёнов-Тян-Шанский, к 190-летию со дня рождения', 'ax185ax4':'10 рублей регулярной чеканки', 'ax185ax5':'5 рублей регулярной чеканки', 'ax185ax6':'2 рубля регулярной чеканки', 'ax185ax7':'1 рубль регулярной чеканки'},
'ax185-2':{'ax185ax0':'Выберите из списка', }
Ответить с цитированием
  #8 (permalink)  
Старый 22.03.2017, 21:53
Аспирант
Отправить личное сообщение для Sprutenok000 Посмотреть профиль Найти все сообщения от Sprutenok000
 
Регистрация: 11.03.2017
Сообщений: 42

так вот я и спрашиваю почему у меня не получается вывести эти данные при клике на List4 и ошибку не показывает
Ответить с цитированием
  #9 (permalink)  
Старый 22.03.2017, 21:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Sprutenok000
а что это?
данные для списков.
Ответить с цитированием
  #10 (permalink)  
Старый 22.03.2017, 22:03
Аспирант
Отправить личное сообщение для Sprutenok000 Посмотреть профиль Найти все сообщения от Sprutenok000
 
Регистрация: 11.03.2017
Сообщений: 42

угу вот выбор 4-го списка должен привести к выводу определенного контента который относится к данному пункту списка а он не выводится вот я и спросил что я сделал нетак
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При клике ссылки, открыть DIV блок, и при клике ещё раз, закрыть его Simon Общие вопросы Javascript 59 28.05.2017 17:31
При наведении на определенный блок, DIV, появляется скрытое сожержимое kismedia Элементы интерфейса 9 22.05.2015 19:15
Передать div блок на другую страницу по ссылке kostant jQuery 5 04.09.2013 10:29
Скрытие блока div и его составляющих pomuk123 Events/DOM/Window 6 14.02.2011 10:31
Закрытие прозрачного div при щелчке мыши в любой его области mav1 Элементы интерфейса 8 09.02.2011 19:25