JS OnMouseOver-Event (DIV2) изменить BackgroundImage (DIV1)

У меня есть полноэкранный div, который в моем случае получил ID # background-change.

В этом fullscreen-bg я получил 3 Div с именами .fullscreen-column-1, .fullscreen-column-2 и т. д.

теперь я хочу изменить фоновое изображение # background-change, пока mouseoverevent вызывается в столбцах.

Мой код выглядит так, но он не сработал.

<div id = "background-change" data-midnight = "dark" data-bg-mobile-hidden = "" class = "wpb_row vc_row-fluid vc_row full-width-content vc_row-o-full-height vc_row-o-columns-middle vc_row-o-equal-height vc_row-flex  vc_row-o-content-middle standard_section    first-section loaded" style = "padding-top: 0px; padding-bottom: 0px; margin-left: -298px; width: 1841px; visibility: visible; min-height: 96.7579vh;"><div class = "row-bg-wrap instance-0"><div class = "inner-wrap"> <div class = "row-bg    " style = "" data-color_overlay = "" data-color_overlay_2 = "" data-gradient_direction = "" data-overlay_strength = "0.3" data-enable_gradient = "false"></div></div> </div><div class = "col span_12 dark left" style = "min-height: 96.7579vh;">
<div class = "vc_col-sm-4 fullscreen-column-1 wpb_column column_container vc_column_container col has-animation padding-10-percent instance-0 animated-in" data-border-radius = "none" data-shadow = "none" data-border-animation = "" data-border-animation-delay = "" data-border-width = "none" data-border-style = "solid" data-border-color = "#000000" data-bg-cover = "" data-padding-pos = "all" data-has-bg-color = "false" data-bg-color = "" data-bg-opacity = "1" data-hover-bg = "" data-hover-bg-opacity = "1" data-animation = "fade-in-from-left" data-delay = "500" style = "padding-top: 184.094px; padding-bottom: 184.094px; opacity: 1; transform: translate(0px, 0px);"><a class = "column-link" href = "#"></a>
    <div class = "vc_column-inner">
        <div class = "wpb_wrapper">
            <h2 style = "font-size: 64px;color: #ffffff;text-align: center;font-family:Chivo;font-weight:400;font-style:normal" class = "vc_custom_heading" id = "testid">About</h2>
        </div> 
    </div>
</div> 
<div class = "vc_col-sm-4 wpb_column column_container vc_column_container col no-extra-padding instance-1" data-border-radius = "none" data-shadow = "none" data-border-animation = "" data-border-animation-delay = "" data-border-width = "none" data-border-style = "solid" data-border-color = "" data-bg-cover = "" data-padding-pos = "all" data-has-bg-color = "false" data-bg-color = "" data-bg-opacity = "1" data-hover-bg = "" data-hover-bg-opacity = "1" data-animation = "" data-delay = "0">
    <div class = "vc_column-inner">
        <div class = "wpb_wrapper">
            <h2 style = "font-size: 64px;color: #ffffff;text-align: center;font-family:Chivo;font-weight:400;font-style:normal" class = "vc_custom_heading">Work</h2>
        </div> 
    </div>
</div> 

<div class = "vc_col-sm-4 wpb_column column_container vc_column_container col no-extra-padding instance-2" data-border-radius = "none" data-shadow = "none" data-border-animation = "" data-border-animation-delay = "" data-border-width = "none" data-border-style = "solid" data-border-color = "" data-bg-cover = "" data-padding-pos = "all" data-has-bg-color = "false" data-bg-color = "" data-bg-opacity = "1" data-hover-bg = "" data-hover-bg-opacity = "1" data-animation = "" data-delay = "0" style = "min-height: 425px;">
    <div class = "vc_column-inner">
        <div class = "wpb_wrapper">

        </div> 
    </div>
</div> `<div class = "vc_col-sm-4 fullscreen-column-1 wpb_column column_container vc_column_container col has-animation padding-10-percent instance-0 animated-in" data-border-radius = "none" data-shadow = "none" data-border-animation = "" data-border-animation-delay = "" data-border-width = "none" data-border-style = "solid" data-border-color = "#000000" data-bg-cover = "" data-padding-pos = "all" data-has-bg-color = "false" data-bg-color = "" data-bg-opacity = "1" data-hover-bg = "" data-hover-bg-opacity = "1" data-animation = "fade-in-from-left" data-delay = "500" style = "padding-top: 184.094px; padding-bottom: 184.094px; opacity: 1; transform: translate(0px, 0px);"><a class = "column-link" href = "#"></a>
    <div class = "vc_column-inner">
        <div class = "wpb_wrapper">
            <h2 style = "font-size: 64px;color: #ffffff;text-align: center;font-family:Chivo;font-weight:400;font-style:normal" class = "vc_custom_heading" id = "testid">About</h2>
        </div> 
    </div>
</div>`

А вот и js:

<script type = "text/javascript">
document.getElementsByClassName("fullscreen-column-1").onmouseover = function() {
    document.getElementById("background-change").style.backgroundImage = "url('https://mywebsite.de/uploads/image-1.jpg')";
};
</script>

у кого-нибудь есть решение? Я не могу заставить его работать, я чувствую себя тупым прямо сейчас ...

Решение: Автор: Раджан Патил

for (i = 0; i < document.getElementsByClassName("fullscreen-column-1").length; i++) {
  document.getElementsByClassName("fullscreen-column-1")[i].onmouseover = function() {
      document.getElementById("background-change").style.backgroundImage = "url('your-image-url')";
    }
  }

Пожалуйста, переформатируйте это с помощью блоков кода и добавьте свой HTML.

theblindprophet 11.07.2018 20:39

Возможный дубликат Изменить фоновое изображение при наведении и множество одинаковых ответов, найденных при поиске SO.

Rob 11.07.2018 20:57

извините, но это бесполезно. Вы не можете изменить фон родительского div с помощью css. css работает только сверху вниз. не сверху вниз.

LenB 11.07.2018 21:00

О, я нажал не на ту. Так что я снова продолжу делать эту работу за вас: stackoverflow.com/questions/17881699/… Если это не сработает. Я сделаю больше работы, которую следовало бы делать вам, но я сделаю за вас. Но если вы ищете точный ответ, вы попали не в то место.

Rob 11.07.2018 21:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
4
34
2

Ответы 2

Есть опечатка. getElementsById должен быть getElementById

Также прикрепите слушателя событий следующим образом:

for (i = 0; i < document.getElementsByClassName("fullscreen-column-1").length; i++) {
  document.getElementsByClassName("fullscreen-column-1")[i].onmouseover = function() {
      document.getElementById("background-change").style.backgroundImage = "url('your-image-url')";
    }
  }

исправил, но не помог.

LenB 11.07.2018 20:55

Это потому, что когда вы вызываете getElementsByClassName, он возвращает объект, подобный массиву, всех дочерних элементов, которые имеют все заданные имена классов. Поэтому, когда вы хотите прикрепить прослушиватель событий к этим элементам, вам нужно запустить цикл. См. Мой отредактированный ответ.

Rajan Patil 11.07.2018 21:18

Ух ты! Спасибо. Я не думаю, что. Я всегда думал, что сделаю это неправильно, или, может быть, мне что-то не хватает в моем коде.

LenB 11.07.2018 21:30

Для этого вам не нужен JavaScript. Вместо этого используйте CSS.

.fullscreen-column-1 {
  width: 400px;
  height: 1000px;
  background-image: url(https://picsum.photos/400/1000);
  transition: 0.2s ease-in-out;
}

.fullscreen-column-1:hover {
  background-image: url(https://picsum.photos/400/1002)
}
<div class = "fullscreen-column-1"></div>

Я не хочу изменять bg столбца, я хочу изменить фон родительского div fullscreen-bg.

LenB 11.07.2018 20:55

Другие вопросы по теме