javascript - 如何在 JavaScript 事件 onmouseover 或 onmousemove 等时设置条件

标签 javascript events dom-events

我正在尝试创建一个 JavaScript 条件,但它不起作用。 通常,我想设置 HTML 标签悬停、单击、内部的条件 if 条件

if(tag.onmouseover) 像这样,

我正在尝试制作一个 slider ,为我的代码片段提供服务并希望设置 如果幻灯片悬停则条件将执行。

请参阅下面的代码片段:

let $ = ($)=> document.querySelector($);
let _ = (_)=> document.querySelectorAll(_);
let slide = _(".slide");
let demo = $('#demo');



slide.forEach((s)=> {
 if(s.onmouseover){
   demo.innerHTML = 'true';
 } else {
   demo.innerHTML = 'false';
 }
})


// the onmouseover not working in if contidion,
.slide_wrapper{
    display: flex;
    justify-content: space-between;

}
.slide{
    height: 80vh;
    background: cyan;
    color: brown;
    transition: 1s;
    margin: 5px;
    flex: 1;
    text-align: center;
}
.slide:hover{
    flex-grow: 5;
}
<div class="slide_wrapper">
<div class="slide"> lorem is a dummy text </div>
<div class="slide"> lorem is a dummy text </div>
<div class="slide"> lorem is a dummy text </div>
<div class="slide"> lorem is a dummy text </div>
<div class="slide"> lorem is a dummy text </div>

    </div>
    
    
    
    <div id="demo" > </div>

最佳答案

我认为您想要使用 .addEventListener() 才能使其按您的预期工作。应该这样做:

let $ = ($)=> document.querySelector($);
let _ = (_)=> document.querySelectorAll(_);
let slide = _(".slide");
let demo = $('#demo');



slide.forEach((s)=> {
  s.addEventListener('mouseover', function() {
    demo.innerHTML = 'true';
  });
  s.addEventListener('mouseleave', function() {
    demo.innerHTML = 'false';
  });
})


// the onmouseover not working in if contidion,
.slide_wrapper{
    display: flex;
    justify-content: space-between;

}
.slide{
    height: 80vh;
    background: cyan;
    color: brown;
    transition: 1s;
    margin: 5px;
    flex: 1;
    text-align: center;
}
.slide:hover{
    flex-grow: 5;
}
<div class="slide_wrapper">
<div class="slide"> lorem is a dummy text </div>
<div class="slide"> lorem is a dummy text </div>
<div class="slide"> lorem is a dummy text </div>
<div class="slide"> lorem is a dummy text </div>
<div class="slide"> lorem is a dummy text </div>

    </div>
    
    
    
    <div id="demo" > </div>

不需要if,因为事件不是这样工作的。每次将鼠标移到 .slide 上时,都会在此元素上触发 mouseover 事件。如果是这种情况,您需要将 innerHTML 更改为 'true'。如果您将鼠标从元素上移开,则会触发 mouseleave 事件,并且您希望将文本更改为 false。这就是基于事件的通信的工作原理。

关于javascript - 如何在 JavaScript 事件 onmouseover 或 onmousemove 等时设置条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59880966/

相关文章:

javascript - TinyMCE 图片上传

javascript - 如何在纯 JavaScript 中仅绑定(bind)一次事件监听器?

JavaScript 函数和事件

javascript - 如何针对触摸设备优化网站

Javascript:使用 ActiveXobject 保存文件

javascript - 检测给定 Javascript 对象是否为 DOM 元素的最佳方法是什么?

javascript - AngularJS 中的一种 HTML 绑定(bind)方式

java - Java 中有面板监听器吗?

javascript - 有条件赋值时自动触发模糊事件

javascript - 动态绑定(bind)事件处理程序的最有效方法