代码之家  ›  专栏  ›  技术社区  ›  NVG

在JS中看不到问题

  •  0
  • NVG  · 技术社区  · 14 年前

    我想当鼠标在一个图像上,一个事件应该被触发一次,它应该被再次触发后,鼠标离开该图像,并再次回来,也至少2秒过去。

    如果我将鼠标放在图像上,它会像每毫秒一样被调用,根据我函数的逻辑,一旦你将鼠标移到变量“canhover”上,它就会变为0,直到你将鼠标移出去

    这个代码似乎有一个错误,我看不到它。我需要一双新眼睛,但算法是合理的

    工作代码:

    <script type="text/javascript">
    var timeok = 1;
    function redotimeok() {
        timeok = 1;
    }
    //
    function onmenter()
    {
    if (timeok == 1) 
        {
      enter();
      timeok = 0;
        }
    }
    //
    function onmleave()
    {
      setTimeout(redotimeok, 2000);
      leave();
    }
    //
    
    $('#cashrefresh').hover(onmenter,onmleave);
    
    function enter(){
      $("#showname").load('./includes/do_name.inc.php');
      $("#cashrefresh").attr("src","images/reficonani.gif");
    }
    
    function leave(){
      $("#cashrefresh").attr("src","images/reficon.png");
    }
    </script>
    
    3 回复  |  直到 14 年前
        1
  •  1
  •   Ken Redler    14 年前

    我不知道这是否能解决您的整个问题(因为我们没有详细的描述),但是:

    $('#cashrefresh').hover(onmenter(),onmleave());
    

    尝试:

    $('#cashrefresh').hover(onmenter,onmleave);
    

    同样的道理:

    setTimeout(redotimeok, 2000); // just the function name
    

    而且,我也不知道你在哪里 timeok 归零。你的意思是 timeok = 0 在里面 onmenter()

        2
  •  1
  •   Sinan    14 年前

    jquery中有两种方法可以解决您的问题:

    .mouseenter() .mouseleave()

    看看那里的演示。

    编辑:

    我想 hover 是为了 mouseover mouseout ,很抱歉给您带来困惑。

    我又查了一遍你的密码。当鼠标移到图像上时,你似乎在改变图像,这迫使浏览器加载新的图像,旧的图像消失了很长一段时间,直到新的图像出现,我想这一定是连续触发两个处理程序,你得到了这种行为。

    尽量不要改变图片的来源,注释掉那一行 console.log("some message") 在那里,看看这个消息是否重复了那么多 .load()

    希望这有帮助。

        3
  •  0
  •   eapen    14 年前

    尝试按以下方式更改函数:

       function onmleave()
        {
          setTimeout(redotimeok, 2000);
          leave();
        }