一个关于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
};);