[size=24px]window.onscroll=window.onload=inix()
为什么都是window事件为什么调用move方法时不加括号,调用inix()方法时加括号呢????document.myform.selCity.options.selectIndex=0; 与 document.myform.selCity.selectedIndex=0; 有区别吗???[/size]注:selCity是下拉列表框的name
为什么都是window事件为什么调用move方法时不加括号,调用inix()方法时加括号呢????document.myform.selCity.options.selectIndex=0; 与 document.myform.selCity.selectedIndex=0; 有区别吗???[/size]注:selCity是下拉列表框的name
如果定义函数是 function inix(){} 相当于
inix = function(){}
inix就是函数句柄, inix()是函数的调用执行
如果希望 window.onload = inix()的话, inix的执行返回结果必须是函数句柄 比如 return funcion(){...}--------------
options没有selectIndex属性
window.onscroll=move ;和window.onLoad=move()
我是问为什么window事件调用方法时,一个要加括号一个不加呢????
而window.onload = inix()是先执行inix函数,然后把inix执行后的返回值绑定给window.onload事件,所以inix函数的返回值必须是一个函数,就像这样 function inix(){
...
return function(){
...
}
}
<script>
function a(){alert(1);}
window.onload=a;//运行后弹出1,就是因为a()最后的结果是个函数alert()
</script>而
<script>
var x=0;
function a(){x=1;}
window.onload=a;
alert(x);//运行后弹出为0,这个应该是因为onload事件还没有执行的关系
</script>再
<script>
var x=0;
function a(){x=1;}
window.onload=a;
</script>
<input type="button" onclick="alert(x)" value="ddd" />
<!--按钮点击后,弹出为1,说明onload是执行了a(),显然a函数里面是个赋值等式,和楼上大大说的不一样-->
你window.onload事件什么时候执行都没有搞清楚啊 。onload 是等到整张页面加载完之后才执行的,页面的加载顺序是 全局的js脚本,然后加载DOM节点,然后才是执行onload,这个跟onload的出现的顺序无关
你的例子中alert(x)是页面没有加载完就执行的,先于onload。 而button的onclick 事件,是整张页面加载完了,onload也执行了,然后你执行了点击动作
没法在详细解释了,再不懂去看js的基础书籍吧
function fn(){
alert(1);
}和下面例子是等价的window.onload = func();
function func(){
function fn(){
alert(1);
};
return fn;
}或者直接写成匿名函数也是等价的window.onload = func();
function func(){
return function(){
alert(1);
};
}但如果是下面这样呢 ?window.onload = func();
function func(){
alert(2); function fn(){
alert(1);
}; return fn;
}这时候就要注意执行顺序了,首先在绑定window.onload之前,会先执行func函数,输出 2 ,并返回fn这个函数绑定给window.onload事件,然后等待页面加载完,在所有的页面元素加载完之后,执行window.onload事件,输出 1。
我使出浑身解数解释了,吐血三升。