Применить для всех 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 не интересует! |
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);
}
|
Спасибо, работает! Но, только для стиля 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, не получилось. |
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;
}
|
Цитата:
<span>В div перед p</span>не исчезает. Цитата:
<span>В div перед p</span>будет применяться только к текущему div. т.е. в котором появился код <span>В div перед p</span>. По другому мне для каждого div, потребуется присваивать уникальный идентификатор. И писать js-скрипт под каждый идентификатор, а их 50т. |
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);
}
|
Благодарю, это то что нужно.
|
| Часовой пояс GMT +3, время: 01:32. |