Javascript.RU

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

Слишком длинный код
Как его можно сократить ?

// Получаем элементы по их ID
const item1 = document.getElementById("item-1");
const item2 = document.getElementById("item-2");
const item3 = document.getElementById("item-3");
const item4 = document.getElementById("item-4");
const item5 = document.getElementById("item-5");
const item6 = document.getElementById("item-6");
const item7 = document.getElementById("item-7");
const item8 = document.getElementById("item-8");
const item9 = document.getElementById("item-9");
const setPic = document.querySelector(".set_pic");



// Добавляем обработчик события наведения на элемент item-1
item1.addEventListener("mouseenter", () => {
  // Устанавливаем фоновое изображение для элемента setPic
  setPic.style.backgroundImage = "url(../picture/box_game-1.png)";
});
// Добавляем обработчик события ухода с элемента item-1
item1.addEventListener("mouseleave", () => {
  // Возвращаем исходное фоновое изображение, если оно было установлено
  if (setPic.style.backgroundImage === "url(../picture/box_game-1.png)") {
    setPic.style.backgroundImage = "";
  }
});

// Добавляем обработчик события наведения на элемент item-2
item2.addEventListener("mouseenter", () => {
  // Устанавливаем фоновое изображение для элемента setPic
  setPic.style.backgroundImage = "url(../picture/box_game-2.png)";
});
// Добавляем обработчик события ухода с элемента item-2
item2.addEventListener("mouseleave", () => {
  // Возвращаем исходное фоновое изображение, если оно было установлено
  if (setPic.style.backgroundImage === "url(../picture/box_game-2.png)") {
    setPic.style.backgroundImage = "";
  }
});

// Добавляем обработчик события наведения на элемент item-3
item3.addEventListener("mouseenter", () => {
  // Устанавливаем фоновое изображение для элемента setPic
  setPic.style.backgroundImage = "url(../picture/box_game-3.png)";
});
// Добавляем обработчик события ухода с элемента item-3
item3.addEventListener("mouseleave", () => {
  // Возвращаем исходное фоновое изображение, если оно было установлено
  if (setPic.style.backgroundImage === "url(../picture/box_game-3.png)") {
    setPic.style.backgroundImage = "";
  }
});

// Добавляем обработчик события наведения на элемент item-4
item4.addEventListener("mouseenter", () => {
  // Устанавливаем фоновое изображение для элемента setPic
  setPic.style.backgroundImage = "url(../picture/box_game-4.png)";
});
// Добавляем обработчик события ухода с элемента item-4
item4.addEventListener("mouseleave", () => {
  // Возвращаем исходное фоновое изображение, если оно было установлено
  if (setPic.style.backgroundImage === "url(../picture/box_game-4.png)") {
    setPic.style.backgroundImage = "";
  }
});

// Добавляем обработчик события наведения на элемент item-5
item5.addEventListener("mouseenter", () => {
  // Устанавливаем фоновое изображение для элемента setPic
  setPic.style.backgroundImage = "url(../picture/box_game-5.png)";
});
// Добавляем обработчик события ухода с элемента item-5
item5.addEventListener("mouseleave", () => {
  // Возвращаем исходное фоновое изображение, если оно было установлено
  if (setPic.style.backgroundImage === "url(../picture/box_game-5.png)") {
    setPic.style.backgroundImage = "";
  }
});

// Добавляем обработчик события наведения на элемент item-6
item6.addEventListener("mouseenter", () => {
  // Устанавливаем фоновое изображение для элемента setPic
  setPic.style.backgroundImage = "url(../picture/box_game-6.png)";
});
// Добавляем обработчик события ухода с элемента item-6
item6.addEventListener("mouseleave", () => {
  // Возвращаем исходное фоновое изображение, если оно было установлено
  if (setPic.style.backgroundImage === "url(../picture/box_game-6.png)") {
    setPic.style.backgroundImage = "";
  }
});

// Добавляем обработчик события наведения на элемент item-7
item7.addEventListener("mouseenter", () => {
  // Устанавливаем фоновое изображение для элемента setPic
  setPic.style.backgroundImage = "url(../picture/box_game-7.png)";
});
// Добавляем обработчик события ухода с элемента item-7
item7.addEventListener("mouseleave", () => {
  // Возвращаем исходное фоновое изображение, если оно было установлено
  if (setPic.style.backgroundImage === "url(../picture/box_game-7.png)") {
    setPic.style.backgroundImage = "";
  }
});

// Добавляем обработчик события наведения на элемент item-8
item8.addEventListener("mouseenter", () => {
  // Устанавливаем фоновое изображение для элемента setPic
  setPic.style.backgroundImage = "url(../picture/box_game-8.png)";
});
// Добавляем обработчик события ухода с элемента item-8
item8.addEventListener("mouseleave", () => {
  // Возвращаем исходное фоновое изображение, если оно было установлено
  if (setPic.style.backgroundImage === "url(../picture/box_game-8.png)") {
    setPic.style.backgroundImage = "";
  }
});

// Добавляем обработчик события наведения на элемент item-9
item9.addEventListener("mouseenter", () => {
  // Устанавливаем фоновое изображение для элемента setPic
  setPic.style.backgroundImage = "url(../picture/box_game-0.png)";
});
// Добавляем обработчик события ухода с элемента item-9
item9.addEventListener("mouseleave", () => {
  // Возвращаем исходное фоновое изображение, если оно было установлено
  if (setPic.style.backgroundImage === "url(../picture/box_game-0.png)") {
    setPic.style.backgroundImage = "";
  }
});
Ответить с цитированием
  #2 (permalink)  
Старый 22.07.2024, 14:59
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,196

Сообщение от Сергей Ракипов
Как его можно сократить ?
Открой для себя циклы и классы...
Тогда можно будет реализовать нечто такое.

const setPic = document.querySelector(".set_pic")
document.querySelectorAll('.item').forEach((o, i) => {
	const url = `url(../picture/box_game-${i}.png)`
	// Добавляем обработчик события наведения на элемент 
	o.addEventListener("mouseenter", _ => {
	  // Устанавливаем фоновое изображение для элемента setPic
	  setPic.style.backgroundImage = url;
	});
	// Добавляем обработчик события ухода с элемента 
	o.addEventListener("mouseleave", _ => {
	  // Возвращаем исходное фоновое изображение, если оно было установлено
	  if (setPic.style.backgroundImage === url) {
		setPic.style.backgroundImage = "";
	  }
	});
})

Последний раз редактировалось ksa, 23.07.2024 в 14:22.
Ответить с цитированием
  #3 (permalink)  
Старый 23.07.2024, 10:39
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 668

Вот такая ошибка

backgroundImage.js:14 Uncaught TypeError: Cannot read properties of null (reading 'forEach')
Ответить с цитированием
  #4 (permalink)  
Старый 23.07.2024, 11:10
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,196

Сообщение от Сергей Ракипов
Вот такая ошибка
Значит на момент работы скрипта нужных элементов (с классом item) нет на странице...
Ответить с цитированием
  #5 (permalink)  
Старый 23.07.2024, 11:29
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 668

ладно попробую разобраться, так как то что написано вроде понятно
Ответить с цитированием
  #6 (permalink)  
Старый 23.07.2024, 12:06
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,196

Сергей Ракипов, для получения уже готовых на 100% решений - нужно предоставлять полные тестовые примеры, а не только некие части кода.
Показал часть - только часть и получил.
Показал полный пример - полный и получил.
Ответить с цитированием
  #7 (permalink)  
Старый 23.07.2024, 13:49
Аспирант
Отправить личное сообщение для roland Посмотреть профиль Найти все сообщения от roland
 
Регистрация: 02.11.2023
Сообщений: 30

ksa, в вашем коде ошибка: используется метод "querySelector" вместо "querySelectorAll". Конечно же null и интерфейс Element не содержат метода "forEach".

Также из примера автора понятно, что в HTML используются идентификаторы, а не классы. Значит селектор для метода "querySelectorAll" будет следующим: [id^="item-"]
document.querySelectorAll('[id^="item-"]')
Ответить с цитированием
  #8 (permalink)  
Старый 23.07.2024, 14:21
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,196

Сообщение от roland
используется метод "querySelector" вместо "querySelectorAll"
Твоя правда...

Сообщение от roland
Также из примера автора понятно, что в HTML используются идентификаторы, а не классы.
Так я его на классы и ориентировал... Иначе от так и будет копипастить с ИДшниками.
Ответить с цитированием
  #9 (permalink)  
Старый 24.07.2024, 16:18
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 668

Спасибо за помощь
Ответить с цитированием
  #10 (permalink)  
Старый 24.07.2024, 20:05
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,196

Обращайся...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти и заменить код скрипта на странице на другой код? smls Общие вопросы Javascript 2 18.07.2016 22:01
"Оживите" код с хабра - https://habrahabr.ru/sandbox/51453/ Daniil2206 Node.JS 0 11.05.2016 18:09
Создать код CSS+HTML JamesMorgan Общие вопросы Javascript 2 11.08.2015 12:50
Код ответа сервера и обновление iframe alexdemi911 Общие вопросы Javascript 6 10.08.2015 22:30
код нe работает в фаирфохе dadli Javascript под браузер 2 28.01.2012 21:18