Javascript.RU

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

Показать скрытые блоки когда value равен определенному значению
Добрый день. Имеется выпадающий список с таким кодом:
function change()
{
var id=0;
block_id='block_'+id;
s=document.getElementById('select-4');
d=s.options[s.selectedIndex].text;;
next='block_'+d;
v=document.getElementById(next).innerHTML;
document.getElementById(block_id).innerHTML='<div id="'+block_id+'">'+v+'</div>';
}

<select name="vote" class="form-select" id="select-4" onchange="change()">
                <option value="0">Выбрать</option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
</select>
<div id="block_0"></div>
<div id="block_1" style="visibility: hidden;">Текст 1</div>
<div id="block_2" style="visibility: hidden;">Текст 2</div>
<div id="block_3" style="visibility: hidden;">Текст 3</div>

Как изменить скрипт, что бы скрытый текст выводился когда value равен определенному значению. Данный скрипт сейчас выводит текст, когда значение равен цифрам от 1 до 3
Ответить с цитированием
  #2 (permalink)  
Старый 23.09.2015, 15:41
Кандидат Javascript-наук
Отправить личное сообщение для sortarray Посмотреть профиль Найти все сообщения от sortarray
 
Регистрация: 19.09.2015
Сообщений: 117

Сообщение от maraterl
равен определенному значению
Какому "определенному"? Кстати, для твоего кода вообще скрытые блоки не особо нужны, можно вот так сделать
<html>
<head>
<meta charset="utf8">
</head>
<body>


<select id="s">

                <option value="0">Выбрать</option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
</select>

<div id="out">


<script>

s.onchange = function(){
  id.innnerHTML = this.value
}


</script>

</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 23.09.2015, 15:47
Новичок на форуме
Отправить личное сообщение для maraterl Посмотреть профиль Найти все сообщения от maraterl
 
Регистрация: 23.09.2015
Сообщений: 6

Цитата:
Какому "определенному"?
value = от 1 до 3. Мне нужно именно вывести через блоки. Потому что там большой объем текста. Например выбрал
<option value="1">Короткий текст</option>
и он показал это:

Эйнштейн - автор более 300 научных работ по физике, а также около 150 книг и статей в области истории и философии науки, публицистики и др. Он разработал несколько значительных физических теорий:
- Общая теория относительности (1907—1916);
- Квантовая теория фотоэффекта;

Последний раз редактировалось maraterl, 23.09.2015 в 15:50.
Ответить с цитированием
  #4 (permalink)  
Старый 23.09.2015, 16:16
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

<select id="s">
	<option value="0">Выбрать</option>
	<option value="1" data-value="длинный текст 1">короткий текст 1</option>
	<option value="2" data-value="длинный текст 2">короткий текст 1</option>
</select>
<div></div>

<script>
	var s = document.getElementById('s'),
		b = document.querySelector('div');

	s.onchange = function() {
		b.innerHTML = this[this.selectedIndex].getAttribute('data-value') || '';
	}
</script>
Ответить с цитированием
  #5 (permalink)  
Старый 23.09.2015, 16:24
Новичок на форуме
Отправить личное сообщение для maraterl Посмотреть профиль Найти все сообщения от maraterl
 
Регистрация: 23.09.2015
Сообщений: 6

Сейчас сижу с телефона, возможности нет проверить.
data-value="длинный текст 2">
поддерживает HTML теги?
Ответить с цитированием
  #6 (permalink)  
Старый 23.09.2015, 16:45
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

Цитата:
поддерживает HTML теги?
Вообще да, но, я не думаю, что нормально пихать в data* атрибуты html код.

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		.block {
			display: none;
		}
		.block_active {
			display: block;
		}
	</style>
</head>
<body>
	<select id="s">
		<option value="0">Выбрать</option>
		<option value="1">короткий текст 1</option>
		<option value="2">короткий текст 2</option>
	</select>
	<div id="b_1" class="block">длинный текст 1</div>
	<div id="b_2" class="block">длинный текст 2</div>

	<script>
		document.getElementById('s').onchange = function() {
			var block = document.getElementById('b_' + this.selectedIndex),
				active = document.querySelector('.block_active');
			
			if (active) {
				active.classList.remove('block_active');
			}

			if (!block) {
				return false;
			}
			
			block.classList.add('block_active');
		}
	</script>
</body>
</html>

Последний раз редактировалось Lemme, 23.09.2015 в 16:48.
Ответить с цитированием
  #7 (permalink)  
Старый 23.09.2015, 16:50
Новичок на форуме
Отправить личное сообщение для maraterl Посмотреть профиль Найти все сообщения от maraterl
 
Регистрация: 23.09.2015
Сообщений: 6

Конечно не нормально но изначально я и создал div с нужными мне стилями и классами, что бы через скрипт показать при выборе селекта
Ответить с цитированием
  #8 (permalink)  
Старый 23.09.2015, 19:07
Новичок на форуме
Отправить личное сообщение для maraterl Посмотреть профиль Найти все сообщения от maraterl
 
Регистрация: 23.09.2015
Сообщений: 6

Код который вы написали, работает хорошо. Но когда я добавляю еще несколько option'ов, например:
<select id="select-4">
	<option value="0">Выбрать</option>
	<option value="1">короткий текст 1</option>
	<option value="2">короткий текст 2</option>
	<option value="1">короткий текст 1.1</option>
</select>
<div id="b_1" class="block">
Длинный текст для value="1"
</div>
<div id="b_2" class="block">
Длинный текст для value="2"
</div>

Текст для
<option value="1">короткий текст 1.1</option>
не выводится
Поменял значение для value, но тексты в div выводятся по порядку, а не по значению value
https://jsfiddle.net/939kh7ce/
https://jsfiddle.net/939kh7ce/1/

Последний раз редактировалось maraterl, 23.09.2015 в 19:22.
Ответить с цитированием
  #9 (permalink)  
Старый 23.09.2015, 19:46
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

Цитата:
выводятся по порядку
забыл про value ;D

Замените это
this.selectedIndex

на это
this.value

Последний раз редактировалось Lemme, 23.09.2015 в 19:49.
Ответить с цитированием
  #10 (permalink)  
Старый 23.09.2015, 20:10
Новичок на форуме
Отправить личное сообщение для maraterl Посмотреть профиль Найти все сообщения от maraterl
 
Регистрация: 23.09.2015
Сообщений: 6

Все, спасибо огромное. Работает как надо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Показать скрыть блоки nurik2120 Элементы интерфейса 4 18.06.2013 10:59
Напишите пожалуйста скрипт: показать скрытые папки, а через 15 секунд снова скрыть n35 Работа 4 24.09.2012 01:45
Напишите пожалуйста скрипт: показать скрытые папки, а через 15 секунд снова скрыть n35 Общие вопросы Javascript 0 21.09.2012 00:50