Свойство отображения Javascript не работает

Здесь team_hover() - это событие onmouseover, а team_hover_bbye() - событие onmouseout. team_hover() работает отлично, но когда я убираю мышь с элемента, team_hover_bbye() запускается, но свойство display gl2 не меняется на none ....

Я хочу изменить свойство display gl2 обратно на none при удалении мыши.

P.S это мой первый пост ..

function team_hover() {
  var a = document.getElementById("gl1");
  var b = document.getElementById("gl2");
  var myVar = setInterval(opac, 20);
  var i = 0;

  function opac() {
    i = i + 0.1;
    a.style.opacity = 1 - i;
    if (i >= 1) {
      a.style.display = "none";
      b.style.display = "block";
    } else {}
  }
}

function team_hover_bbye() {
  var i = document.getElementById("gl1");
  var j = document.getElementById("gl2");
  i.style.opacity = 1;
  i.style.display = "block";
  j.style.display = "none";
}

team_hover_bbye();
#gl1, #gl2 { display: inline-block; width: 2em; height: 2em; margin: 0.5em; }
#gl1 { background: #F00; }
#gl2 { background: #0F0; }
<div id = "gl1" onmouseover = "team_hover()"></div>
<div id = "gl2" onmouseover = "team_hover()"></div>

Все остальное работает нормально?

deEr. 26.04.2018 18:31

Можете ли вы добавить рабочий образец в скрипт / плункер?

Arvind Muthuraman 26.04.2018 18:31

Вам следует отредактировать свой вопрос и создать Минимальный, полный, проверяемый пример.

chazsolo 26.04.2018 18:31
Поведение ключевого слова "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) для оценки ваших знаний,...
0
3
48
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша проблема в том, что интервал продолжается бесконечно, и вы используете неправильные события.

Попробуй это:

var myVar;

function team_hover() {
  var a = document.getElementById("gl1");
  var b = document.getElementById("gl2");
  clearInterval(myVar); // Needed here
  myVar = setInterval(opac, 20);
  var i = 0;

  function opac() {
    i = i + 0.1;
    a.style.opacity = 1 - i;
    if (i >= 1) {
      a.style.display = "none";
      b.style.display = "block";

      clearInterval(myVar); // Performance gain
    } else {}
  }
}

function team_hover_bbye() {
  clearInterval(myVar); // Real fix
  var i = document.getElementById("gl1");
  var j = document.getElementById("gl2");
  i.style.opacity = 1;
  i.style.display = "block";
  j.style.display = "none";
}

team_hover_bbye();
#gl1, #gl2 { display: inline-block; width: 2em; height: 2em; margin: 0.5em; }
#gl1 { background: #F00; }
#gl2 { background: #0F0; }
<div id = "gl1" onmouseenter = "team_hover()"></div>
<div id = "gl2" onmouseout = "team_hover_bbye()"></div>

Также стоит отметить, что то, что вы пытаетесь заархивировать, можно сделать с помощью CSS.

Большое спасибо ! Был отличный привет

Fython 11.09.2018 10:58

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