<html>
<head>
<script>
var fnTitle=function ()
{
var oImg = document.getElementById("img1");
var oDiv = document.getElementById("div1");
oImg.onmouseover = function()
{
oDiv.style.position = "absolute";
oDiv.style.visibility = "visible";
oDiv.style.left = event.clientX + 5;
oDiv.style.top = event.clientY + 5;
}
  function hidden()
{
oDiv.style.visibility="hidden";

}
oImg.onmouseout =function()
{ setTimeout("hidden()",2000);
}
} window.onload=fnTitle;
</script>
</head>
<body>
<img id="img1" src="t4.jpg" style="width:50px;height:50px;"></img>
<div id="div1" style="background-image:url(t4.jpg);width:100px;height:100px; visibility:hidden;">
</div>
</body>
</html>我想让鼠标移出img1的时候过上两秒再让div1消失。但一直报错提示说缺少对象,求高手指点迷津,感激不尽!

解决方案 »

  1.   

    错得很厉害。
    应该将oDiv作为全局变量定义,即,将
    var oDiv
    放在<script...>之后,而不是在某一个function内部
      

  2.   

    把var oDiv = document.getElementById("div1");这个对象。设成全局变量就可以了。
      

  3.   

    因为,setTimeout这类的回调函数,不能直接调用类的方法,如果一定的话,必须在类方法前面加上类实例.
    比如,setTimeout("MyClass.Hidden()", 2000);
      

  4.   

    setTimeout("hidden()",2000); ================>setTimeout(hidden,2000)setTimeout执行的时候会跳出当前的作用域
    setTimeout("hidden()",2000) 因为执行函数写的是字符串 他会找全局的函数hidden (你可以拿一个全局的function hidden 试一下 )
    //-------------------------------
    setTimeout(hidden,2000)  直接吧变量名做为参数  可以找道当前作用域下的 hidden<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title></title>
    <style type="text/css">
    div{
    height:100px;width:100px; border:1px solid #cccccc;;
    }
    </style>    <body ><img id="img1" src="g.gif" style="width:50px;height:50px;"></img>
    <div id="div1" style="background-image:url(t4.jpg);width:100px;height:100px; visibility:hidden;">
    <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
    <script type="text/javascript">
    var fnTitle=function ()
    {
    var oImg = document.getElementById("img1");
    var oDiv = document.getElementById("div1");
    oImg.onmouseover = function()
    {
    oDiv.style.position = "absolute";
    oDiv.style.visibility = "visible";
    oDiv.style.left = event.clientX + 5;
    oDiv.style.top = event.clientY + 5;
    }
      function hidden()
    {
    oDiv.style.visibility="hidden";
    }
    oImg.onmouseout =function(){
      //setTimeout("hidden()",2000);可以试一下 是不是 调用了外面的hidden
      setTimeout(hidden,2000);
            }
    }function hidden(){alert('xx')}
    window.onload=fnTitle;
    </script>
    </body>
    </html>
      

  5.   

    你这样肯定找不到对象
    var oImg = document.getElementById("img1");
    var oDiv = document.getElementById("div1");
    要么页面加载时执行,要么在onmouseover时执行
      

  6.   


    看错了;
    setTimeout(hidden,2000); 
      

  7.   

    setTimeout(hidden,2000)
    就可以了。