以下是javascript function show(layername){ if (!document.getElementById) return false; if (!document.getElementById(layername)) return false; var layer = document.getElementById(layername); layer.style.width = "0px"; layer.style.height = "0px"; layer.style.display = "block"; movement = setTimeout("animation()",0) } function animation(){ if (!document.getElementById) return false; if (!document.getElementById(layername)) return false; var layer = document.getElementById(layername); var xpos = parseInt(layer.style.width); var ypos = parseInt(layer.style.height); if (xpos == 480 && ypos == 80){ return true; } if (xpos < 480){ xpos+=10 } if (xpos > 480){ xpos-=10 } if (ypos < 80){ ypos+=10 } if (ypos > 80){ ypos-=10 } layer.style.width = xpos + "px"; layer.style.height = ypos + "px"; movement = setTimeout("animation()",0); } 以下是html <div id=""> <ul> <li id="myfriends"> <a href="#" onmouseover="show('layer1');">我的好友</a></li> <li id="mydocument"> <a href="#" onmouseover="show('layer2');">我的资料</a></li> <li id="myalbum"> <a href="#" onmouseover="show('layer3');">我的相册</a></li> <li id="myarticles"> <a href="#" onmouseover="show('layer4');">我的文章</a></li> </ul> </div> <div id="layer1" class="clearfloat"> </div> <div id="layer2" class="clearfloat"> </div> <div id="layer3" class="clearfloat"> </div> <div id="layer4" class="clearfloat"> </div> 问题 如果使用参数layer1、layer2、layer3、layer4,则每次都不成功,提示'layername' is undefined 如果将javascript里的layername换成div的id值就能成功,但如果这样javascript程序就会很多 请问怎样才能正确的使用参数的形式?解决方法:movement = setTimeout("animation()",0) 这个地方没有给animation()传参数过去 而定义的animation()函数也没有接受参数,但是又用 var layer = document.getElementById(layername); 来接收layername 这个变量 错误地理解了闭包?想从 function show(layername) 这个函数接收参数??? 定时器好像没有丝毫作用
推荐阅读
Javascript jquery css 写的简单进度条控件
通过我们伟大的 CSS,可以实现非常漂亮的进度条样式。加上 Javascript 的效果,就可以完全“欺骗”我们的用户,让他们有耐心等待浏览器处理完成。上述的原理已经知道了,那么就可以直接看代码了。本人使用的还是 j>>>详细阅读
本文标题:一个javascript参数的小问题
地址:http://www.17bianji.com/kaifa2/JS/29793.html
1/2 1