Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 旋转木马onmouseover和onmouseout不起作用_Javascript_Html_Css_Dom Events - Fatal编程技术网

Javascript 旋转木马onmouseover和onmouseout不起作用

Javascript 旋转木马onmouseover和onmouseout不起作用,javascript,html,css,dom-events,Javascript,Html,Css,Dom Events,我正在练习Javascript。我制作了一个图像传送带。我的旋转滑梯很好用。为了运行幻灯片,我使用了setinterval。当用户将鼠标悬停在图像上时,我想停止幻灯片,当它将鼠标悬停在外时,幻灯片将从暂停的位置开始。为此,我使用了clearinterval。当我onmouseover然后onmouseout我的旋转木马行为怪异。似乎我的逻辑不起作用。我不知道怎么做 const images=document.getElementById('imgs')) const allImages=doc

我正在练习Javascript。我制作了一个图像传送带。我的旋转滑梯很好用。为了运行幻灯片,我使用了
setinterval
。当用户将鼠标悬停在图像上时,我想停止幻灯片,当它将鼠标悬停在外时,幻灯片将从暂停的位置开始。为此,我使用了
clearinterval
。当我
onmouseover
然后
onmouseout
我的旋转木马行为怪异。似乎我的逻辑不起作用。我不知道怎么做

const images=document.getElementById('imgs'))
const allImages=document.queryselectoral(“#imgs img”)
设指数=0;
函数运行(){
索引++;
如果(索引>allImages.length-1){
索引=0
}
imgs.style.transform=`translateX(${-index*500}px)`
}
设置间隔(运行,2000年);
images.onmouseover=()=>{
console.log('In');
清除间隔(运行)+1
}
images.onmouseout=()=>{
console.log('Out');
设置间隔(运行,2000年);
}
*{
框大小:边框框;
}
身体{
保证金:0;
显示器:flex;
证明内容:中心;
对齐项目:居中;
最小高度:100vh;
}
旋转木马{
溢出:隐藏;
宽度:500px;
高度:500px;
盒影:2px2p5pRGBA(0,0,0,3);
}
.图像容器{
显示器:flex;
过渡:变换300ms线性;
变换:translateX(0);
}
img{
宽度:500px;
高度:500px;
对象匹配:覆盖;
}

您在间隔时间上犯了一个错误。 为了能够清除onmouseover事件中的间隔,需要将其分配给变量

var x = setInterval(run, 2000);
然后将变量传递给clearInterval方法

然后,在mouseout上再次设置间隔

x = setInterval(run, 2000);
最终代码如下所示:

var x = setInterval(run, 2000);

images.onmouseover = () => {
  console.log('In');
  clearInterval(x) + 1
}
images.onmouseout = () => {
  console.log('Out');
  x = setInterval(run, 2000);
}

非常感谢@Nikko。正如我提到的,我是初学者:)。我有几个问题要问你:1<代码>为什么分配给变量?2<代码>为什么在clearinterval中添加+1,3<代码>自x=设置间隔(运行,2000年);那为什么不把x放在onmouseout上呢不客气@krisna。回答你的问题。1.您需要将其分配给一个变量,因为稍后您将在clearInterval中使用它。2.实际上,你省略了“+1”,我只是从你的代码中复制了它。3.这是因为clearInterval清除了计时器,所以需要重新设置。
var x = setInterval(run, 2000);

images.onmouseover = () => {
  console.log('In');
  clearInterval(x) + 1
}
images.onmouseout = () => {
  console.log('Out');
  x = setInterval(run, 2000);
}