js文件中JavaScript句柄问题

JavaScript025

js文件中JavaScript句柄问题,第1张

经过测试,可行!

下面是改好的代码!

<html>

<head><title>导航树例子</title>

<script language="javascript" type="text/javascript" >

function dashu(e){

if(!document.getElementById) return

if(!e) var e=window.event

whicklink=(e.target)?e.target.id:e.srcElement.id

menu=document.getElementById(whicklink+"menu")

boolean=(menu.style.display=="none")

obj=document.getElementById(whicklink)

objname=obj.firstChild.nodeValue.substring(3)

if(boolean){

menu.style.display="block"

obj.firstChild.nodeValue="[-]"+objname

}

else{

menu.style.display="none"

obj.firstChild.nodeValue="[+]"+objname

}

}

function cheshi(){

document.write("wodeshijiebushimeng")

}

</script>

</head>

<body>

<ul>

<li><a id="yonghu" href="#">[+]用户管理</a><!--主菜单-->

<ul id="yonghumenu"><li><a href="#">修改密码</a></li>

<li><a href="#">注销账号</a></li>

<li><a href="#">查看密码</a></li>

</ul>

</li>

<li><a id="bumen" href="#">[+]部门管理</a>

<ul id="bumenmenu"><li><a href="#">修改密码</a></li>

<li><a href="#">注销账号</a></li>

<li><a href="#">查看密码</a></li>

</ul>

</li>

<li><a id="xinxi" href="#">[+]信息管理</a>

<ul id="xinximenu"><li><a href="#">修改密码</a></li>

<li><a href="#">注销账号</a></li>

<li><a href="#">查看密码</a></li>

</ul>

</li>

</ul>

<form name="myform">

<input type="button" name="mybutton" id="mybutton" >

</form>

</body>

</html>

<script>

document.getElementById("yonghu").onclick=dashu

document.getElementById("bumen").onclick=dashu

document.getElementById("xinxi").onclick=dashu

document.getElementById("mybutton").onclick=cheshi

</script>

移出dom只是把图片的dom元素移除了。但是src指向的图片资源还是被占据着。因此在删除dom元素之前,先把el.src = ''我在chrome中这样做是可以释放图片占用的内存资源的。

你可以参照一下Zepto库释放图片资源的方法。代码如下:

$.fn.remove = function(){    

   return this.each(function(){    

     if(this.parentNode){    

       if(this.tagName === 'IMG'){    

         cache.push(this)    

         this.src = 'data:image/gifbase64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs='//让图片资源指向一个空白的gif图片。用cache变量保存dom的引用,60秒。让垃圾回收器有时间回收多余的图片资源。

         if (timeout) clearTimeout(timeout)    

         timeout = setTimeout(function(){ cache = [] }, 60000)    

       }    

       this.parentNode.removeChild(this)    

     }    

   })    

 }