以下我想用add_padding_top()函数对.selected节点进行增加padding操作,但top_val的值始终是0,请问为什么? var top_val=0;
var right_val=0;
var bottom_val=0;
var left_val=0;
function add_padding(what){
if(what<20){
what++;
}else{
what=0;
}
$(".selected").css(
"padding",
top_val+"px "+
right_val+"px "+
bottom_val+"px "+
left_val+"px "
);
}
function add_padding_top(){
add_padding(top_val);
}

解决方案 »

  1.   

    js传递参数采用的是值传递,过程是
    top_val把它的值(0)复制给what,what加1了,但是对top_val没有影响,懂?
    修改是,不用参数,把方法内的what换成top_val
    不知道你是不是这个意思。
      

  2.   

    对,把方法内的what换成top_val 或者传进去一个对象
      

  3.   


    function add_padding(what){
    $(".selected").css(
    "padding",
    top_val+"px "+
    right_val+"px "+
    bottom_val+"px "+
    left_val+"px "
    );
    if(what_val<20){
    waht_val++;
    }else{
    what_val=0;
    }
    }
    function add_padding_top(){
    add_padding(top); }
    怎样也出错,怎么将top跟_val组合起来作为变量?
      

  4.   

    简单想法就是如何将一个字符串变成一个变量?如用what和_val组合,这样就不会有直接传值的可能,但组合出来的what_val(也就是top_val)是字符串,怎么将字符串变成变量
      

  5.   

    难道只有恶魔eval做法?百度查了一下,好像只能eval,听说用eval很不好,具体那里不好说不清
      

  6.   

    变量作用域的问题....你的top_val始终不变,当然是0了   var top_val=0;
        var right_val=0;
        var bottom_val=0;
        var left_val=0;
        function add_padding(what){
            if(top_val<20){  //把what改成top_val
                top_val++;
            }else{
                top_val=0;
            }
            $(".selected").css(
                "padding",
                top_val+"px "+
                right_val+"px "+
                bottom_val+"px "+
                left_val+"px "
            );
        }
        function add_padding_top(){
            add_padding(); //没必要传参
        }
      

  7.   

    if(top_val<20){  //把what改成top_val
                top_val++;
            }else{
                top_val=0;
            }
    我之前就是这么些,但我后面还有其他
    add_padding_right
    add_padding_left
    add_padding_bottom
    等函数,以上这样改只能适合一种情况
      

  8.   

    为什么要写四个函数,一个函数不就可以完成的吗?如果非要写四个函数,你可以增加个返回值,再对top_val赋值
    function add_padding(what){
            if(what<20){
                what++;
            }else{
                what=0;
            }
            $(".selected").css(
                "padding",
                top_val+"px "+
                right_val+"px "+
                bottom_val+"px "+
                left_val+"px "
            );
            return what;
        }
        
        function add_padding_top(){
            top_val = add_padding(top_val);
        }
      

  9.   

    var top_val=0;
    var right_val=0;
    var bottom_val=0;
    var left_val=0;
    function add_padding(what){
    $(".selected").css(
    "padding",
    top_val+"px "+
    right_val+"px "+
    bottom_val+"px "+
    left_val+"px "
    );
    var temp=what+"_val";
    if(temp<20){
    eval(temp+"++");
    }else{
    eval(temp+"=0");
    }
    }
    function add_padding_top(){
    add_padding(top);
    //if(top_val<20){
    // top_val++;
    //}else{
    // top_val=0;
    //}
    //add_padding();
    }
    也不行,想传参就这么难啊
      

  10.   


    强啊,能行,为什么加了个return what就能行?想不通