日期:2014-05-16  浏览次数:20303 次

一个关于onmouseover出发function的问题
网页中经常会遇到这样的问题:
鼠标经过某个按钮,然后按钮发生一些变化。 
最基础的方法是通过 在对象上 直接加 脚本 onmouseover="..."

但是为了把js和网页html分离,经常把js 写在一个外部独立的js文件,通过对对象的ID进行遥控。

比如:
一个按钮的对象是 myObj
JScript code
myObj.onmouseover=function(){ //do something...}


可是我发现一个问题:
因为我习惯把js调用放在head区,那么一开始就会执行到js文件里的这句代码。由于网页还未加载,所以myObj不存在。
于是,我把js调用放在网页最底部。这样,就不会出错了。

虽然能解决问题,可是,我又不喜欢把js放在最后调用,我还是喜欢放在head区里。


问题一:
怎么办才好呢?是否要在js里做适当修改?


基于以上情况,我试着自己琢磨,产生了 问题二:
JScript code

function MyCounter()
{
    var myObj=$("xxxxxxxx");
    myObj.onmouseover=function(){ //do something };
    myObj.onmouseout=function(){ //do something    };
}

window.setInterval("MyCounter()",1000);



这样相当于每秒钟都执行一次。 这样虽然能实现效果。但是,这样是不是多了个计数器,比较耗资源?
在每秒钟执行的间隔 是不是会无效?

------解决方案--------------------
1.肯定会影响性能的
2.不会啊,
就好像这样
obj = {}
obj.test 有值吗?
obj.test 有值吗?
obj.test = 123
obj.test 有值了。
obj.test 有值了。

只要给对象附上了属性或方法,你不删除它,它会保持的。


放在head区域,直接用window.onload 或者js库的 domReady ,何来那么麻烦
------解决方案--------------------
window.onload=MyCounter; //这样就行了。
------解决方案--------------------
全部放在$(function() {








});
------解决方案--------------------
放在window.onload = function() {

 // do something
};

或者$(document).ready(function() {

 // do something
};);