var f=[],fn=[];
for(i=1;i<7;i++){
f[i]=$('f'+i);
fn[i]=$('fn'+i);
f[i].onmouseover=fonmouse(i);
}
function fonmouse(i){
fndisplay(i);
}function fndisplay(i){
for (var j=1;j<7;j++){
if(i==j){
fn[j].style.display='block';
}else{
fn[j].style.display='none';
}
}
}绑定的 事件为什么他先执行了一下?
而我得数组值没有赋完,出现空值就报错。
但是鼠标经过的时候值就已经赋完了,记得以前写的时候 
onmouseover 就是先绑定上里面的函数是不执行的,只有鼠标经过的时候才执行。
等鼠标经过的时候我得值就已经赋完了,不知道大家看明白没,坐等求解。

解决方案 »

  1.   

    var f = [],fn = [];
    for (i = 1; i < 7; i++) {
        f[i] = $('f ' + i);
        fn[i] = $('fn ' + i);
        f[i].onmouseover = function() { fonmouse(i); }  //这样写就不会执行了
    }
    ...
      

  2.   

    最好把完整代码发上来看看,是不是跟jQuery代码混在一起写了。
      

  3.   

    <div class="xietong">
    <h1><span><a href="###" id="f1">市县农网</a><a href="###" id="f2">市县农委</a><a href="###" id="f3">市直部门</a><a href="###" id="f4">龙头企业</a><a href="###" id="f5">合作社</a><a href="###" id="f6">友情链接</a></span>网站协同</h1>
    <%for i=1 to 6%>
    <div id="fn<%=i%>">
    北京市农业局信息网<%=i%>
    </div>
    <%next%>
    </div><script>function $(sid){
    return document.getElementById(sid);
    }var f=[],fn=[];
    for(i=1;i<7;i++){
    f[i]=$('f'+i);
    fn[i]=$('fn'+i);
    f[i].onmouseover=function(i){fonmouse(i);}
    }
    function fonmouse(i){
    fndisplay(i);
    }
    function fndisplay(i){
    for (var j=1;j<7;j++){
    if(i==j){
    fn[j].style.display='block';
    }else{
    fn[j].style.display='none';
    }
    }
    }
    </script>
      

  4.   


    for(i=1;i <7;i++){ 
    (function(){
    var j=i;
    f[j]=$( 'f '+j); 
    fn[j]=$( 'fn '+j); 
    f[j].onmouseover=fonmouse(j); 
    })();

      

  5.   


    差点忘了……上面那个是会立即执行的,这个才是
    for(i=1;i <7;i++){ 
        (function(){
            var j=i;
            f[j]=$( 'f '+j); 
            fn[j]=$( 'fn '+j); 
            f[j].onmouseover=function(){fonmouse(j);};
        })();

      

  6.   

    for(i=1;i <7;i++){ 
        (function(i){
            var j=i;
            f[j]=$( 'f'+j); 
            fn[j]=$( 'fn'+j); 
            f[j].onmouseover=function(){fonmouse(j);};
        })(i);
    } 我闭包传不进去值。  里面得不到I
      

  7.   

    不需要传啊……那么写就行了for(i=1;i <7;i++){ 
        (function(){
            var j=i;
            f[j]=$( 'f'+j); 
            fn[j]=$( 'fn'+j); 
            f[j].onmouseover=function(){fonmouse(j);};
        })();
    } 里面已经有i了……
      

  8.   

    OK了  谢谢各位大哥, 上面的 大哥 我QQ 361510101   新手。 要方便就加下。  多谢多谢。