Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.07.2019, 19:21
Аспирант
Отправить личное сообщение для Biotoxsin Посмотреть профиль Найти все сообщения от Biotoxsin
 
Регистрация: 11.04.2019
Сообщений: 74

Простой вопрос
Здравствуйте!

Есть такой код:

$( "#open1" ).click(function() {
	$( "#content1" ).fadeIn( "slow", function() {
	});
	});
$( "#open2" ).click(function() {
	$( "#content2" ).fadeIn( "slow", function() {
	});
	});
$( "#open3" ).click(function() {
	$( "#content3" ).fadeIn( "slow", function() {
	});
	});


Я хотел его немного сократить ибо подобных копий нужно порядком. Пробовал так но почему то не работает. Не могу понять почему.

for (count = 0; count < 5; count++){
	var open = $("#open" + count);
	var content = $("#content" + count);
	mark.click(function() {
		content.fadeIn( "slow", function() {
		});
	});
}


Помогите пожалуйста понять где я ошибся.
Ответить с цитированием
  #2 (permalink)  
Старый 17.07.2019, 21:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от Biotoxsin
Помогите пожалуйста понять где я ошибся.
что такое mark? замените for на each или замените var на let.
Ответить с цитированием
  #3 (permalink)  
Старый 17.07.2019, 21:54
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

По моему вы забыли в условии цикла объявить переменную.
Попробуйте добавить var:
for (var count = 0; count < 5; count++){

Я сам такое часто упускаю и у меня сначала всё работает, а после бабеля и минификации всё ломается.
Ответить с цитированием
  #4 (permalink)  
Старый 17.07.2019, 22:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

MC-XOBAHCK,
после цикла элементов в указанных переменных не существует, это основная проблема.
Ответить с цитированием
  #5 (permalink)  
Старый 17.07.2019, 23:54
Аспирант
Отправить личное сообщение для Biotoxsin Посмотреть профиль Найти все сообщения от Biotoxsin
 
Регистрация: 11.04.2019
Сообщений: 74

Сообщение от рони Посмотреть сообщение
что такое mark? замените for на each или замените var на let.
Нет. Код должен выводить блок той нумерации (#content1) кнопка которой была нажата (#open1). Или я опять туплю?
Ответить с цитированием
  #6 (permalink)  
Старый 18.07.2019, 00:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Biotoxsin,
один из множества вариантов ... через классы
$(function() {
var open = $(".open"), content = $( ".content" );
open.click(function() {
   var i = open.index(this);
   content.eq(i).fadeIn()
})
});
Ответить с цитированием
  #7 (permalink)  
Старый 18.07.2019, 00:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Biotoxsin,
или так
$(function() {
for (let count = 0; count < 5; count++){
	let open = $("#open" + count);
	let content = $("#content" + count);
	open.click(function() {
		content.fadeIn( "slow", function() {
		});
	});
}
});
Ответить с цитированием
  #8 (permalink)  
Старый 18.07.2019, 00:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Biotoxsin,
$(function() {
var open = $("[id^=open]"), content = $( "[id^=content]" );
open.each(function(i) {
var el = content.eq(i);
$(this).click(function() {
   el.fadeIn()
})
})
});
Ответить с цитированием
  #9 (permalink)  
Старый 18.07.2019, 00:33
Аспирант
Отправить личное сообщение для Biotoxsin Посмотреть профиль Найти все сообщения от Biotoxsin
 
Регистрация: 11.04.2019
Сообщений: 74

Сообщение от рони Посмотреть сообщение
Biotoxsin,
или так
$(function() {
for (let count = 0; count < 5; count++){
	let open = $("#open" + count);
	let content = $("#content" + count);
	open.click(function() {
		content.fadeIn( "slow", function() {
		});
	});
}
});
Спасибо большущее!!!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу установить чекбокс. простой вопрос sany531 jQuery 6 21.02.2014 20:21
Вопрос по замыканиям Goodfella Общие вопросы Javascript 20 09.03.2011 01:21
Теоретический вопрос. gods33 (X)HTML/CSS 10 16.12.2010 23:49
Не могу найти ответ на простой вопрос lukingnu jQuery 2 25.11.2010 17:03
Простой вопрос - надо из скрипта перейти на ссылку Brother Общие вопросы Javascript 1 27.02.2008 09:50