Javascript.RU

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

Применить для всех div
Есть код, который применяет действие только к одному блоку div (первому). Гуру по JavaScript, подскажите пожалуйста что сделать, чтобы при наведении курсора на элемент применялся цвет ко всем div, на который наводится курсор?

<div data-add-back-btn="">Блок 1</div>
<div data-add-back-btn="">Блок 2</div>
<div data-add-back-btn="">Блок 3</div>
...


<script>
var el = document.querySelector("div");
    el.addEventListener("mouseover", mouseOver);
    el.addEventListener("mouseout", mouseOut);

function mouseOver() {
    el.style.color = "red";
}

function mouseOut() {
    el.style.color = "black";
}
</script>


CSS не интересует!

Последний раз редактировалось Viher, 03.03.2017 в 17:30.
Ответить с цитированием
  #2 (permalink)  
Старый 03.03.2017, 17:33
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

function mouseEnter() {
    this.style.color = "red";
}
 
function mouseLeave() {
    this.style.color = "black";
}


var div = document.querySelectorAll('div');

for(var i = 0; i < div.length; i++) {
   div[i].addEventListener('mouseenter', mouseEnter);
   div[i].addEventListener('mouseleave', mouseLeave);
}



function mouseHandler(e) {
    this.style.color = e.type === 'mouseenter' ?  'red' : 'black';
}

var div = document.querySelectorAll('div');

for(var i = 0; i < div.length; i++) {
   div[i].addEventListener('mouseenter', mouseHandler);
   div[i].addEventListener('mouseleave', mouseHandler);
}
Ответить с цитированием
  #3 (permalink)  
Старый 05.03.2017, 14:03
Аватар для Viher
Новичок на форуме
Отправить личное сообщение для Viher Посмотреть профиль Найти все сообщения от Viher
 
Регистрация: 25.02.2017
Сообщений: 8

Спасибо, работает! Но, только для стиля CSS. Как сделать цикл для такой конструкции?

<div data-add-back-btn=""><p>Блок 1</p></div>
<div data-add-back-btn=""><p>Блок 1</p></div>
<div data-add-back-btn=""><p>Блок 1</p></div>


var x = document.querySelector("div"); 
    x.onmouseover = function() {this.insertAdjacentHTML('afterbegin', '<span>В div перед p</span>')};
    x.onmouseout = function() {this.removeChild(x.childNodes[0])};


Работает только для первого div. Пробовал цикл for, не получилось.
Ответить с цитированием
  #4 (permalink)  
Старый 05.03.2017, 17:30
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

function mouseEnter() {
    this.insertAdjacentHTML('afterbegin', '<span>В div перед p</span>')
}
 
function mouseLeave() {
    this.removeChild(this.childNodes[0])
}


var div = document.querySelectorAll('div[data-add-back-btn]');

for(var i = 0; i < div.length; i++) {
   div[i].addEventListener('mouseenter', mouseEnter);
   div[i].addEventListener('mouseleave', mouseLeave);
}


P.S.: то что Вы хотите реализовать - можно сделать с помощью CSS.

div[data-add-back-btn]::before {
    content: 'В div перед p';
    display: none;
}
div[data-add-back-btn]:hover::before {
    display: inline;
}

Последний раз редактировалось ruslan_mart, 05.03.2017 в 18:54.
Ответить с цитированием
  #5 (permalink)  
Старый 05.03.2017, 18:30
Аватар для Viher
Новичок на форуме
Отправить личное сообщение для Viher Посмотреть профиль Найти все сообщения от Viher
 
Регистрация: 25.02.2017
Сообщений: 8

Сообщение от Ruslan_xDD
function mouseEnter() {
this.insertAdjacentHTML('afterbegin', '<span>В div перед p</span>')
}

function mouseLeave() {
this.removeChild(x.childNodes[0])
}


var div = document.querySelectorAll('div[data-add-back-btn]');

for(var i = 0; i < div.length; i++) {
div[i].addEventListener('mouseenter', mouseEnter);
div[i].addEventListener('mouseleave', mouseLeave);
}
Такой способ я уже пробовал, <span>В div перед p</span> - будет добавляться бесконечно. Возможно через оператор else с braek можно как то сделать, не знаю как. И еще, метод removeChild не срабатывает, если у брать курсор от div'а, код HTML
<span>В div перед p</span>
не исчезает.

Сообщение от Ruslan_xDD
P.S.: то что Вы хотите реализовать - можно сделать с помощью CSS.
Я пытаюсь сделать активный блок, где
<span>В div перед p</span>
будет применяться только к текущему div. т.е. в котором появился код <span>В div перед p</span>. По другому мне для каждого div, потребуется присваивать уникальный идентификатор. И писать js-скрипт под каждый идентификатор, а их 50т.

Последний раз редактировалось Viher, 05.03.2017 в 18:34.
Ответить с цитированием
  #6 (permalink)  
Старый 05.03.2017, 18:53
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

function mouseEnter() {
    var span = document.createElement('span');
    span.innerHTML = 'В div перед p';
    this.insertBefore(span, this.firstChild);
}
 
function mouseLeave() {
    this.removeChild(this.firstChild);
}


var div = document.querySelectorAll('div[data-add-back-btn]');

for(var i = 0; i < div.length; i++) {
   div[i].addEventListener('mouseenter', mouseEnter);
   div[i].addEventListener('mouseleave', mouseLeave);
}
Ответить с цитированием
  #7 (permalink)  
Старый 06.03.2017, 12:52
Аватар для Viher
Новичок на форуме
Отправить личное сообщение для Viher Посмотреть профиль Найти все сообщения от Viher
 
Регистрация: 25.02.2017
Сообщений: 8

Благодарю, это то что нужно.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
один обработчик для всех элементов определенного класса Pedro Garciya Lopez Events/DOM/Window 6 05.07.2013 22:39
Клавиши стрелки для выбора элементов в div Rooner Элементы интерфейса 4 26.10.2012 06:34
Пошаговый вывод скрипта для IE всех версий. Zidky Элементы интерфейса 10 17.06.2009 18:27
Как присвоить текст строке состояния для всех браузеров? Tend Общие вопросы Javascript 4 14.05.2009 16:38
Не работает AppendChild для div, причём только в IE _Kpot_ Internet Explorer 5 12.02.2009 10:55