首页 > 怎么样动态传入函数(计算函数)

怎么样动态传入函数(计算函数)

function compute(obj) {
    var a = $("li").eq(0).text();
    var b = $("li").eq(1).text();
    var c = $("li").eq(2).text();
    $("obj.el").html(
    obj.reult(a,b,c)
    )
};
compute ({
    el : "body",
    resule: function(a,b,c){reutrn a-b-c}
})

大概是这样的,需要每次传入不同的计算换算,页面的不通的结果,abc的参数是可变的,a-b-c的计算公式也是可变的。

我想要的效果是这样
compute({el: "#div1",resulte: function(a,b){return a+b}})在div1里面得到一个计算公式的值
compute({el: "#div2",resulte: function(a,b,c,d){return a*b/c+d}})在div2里面得到一个计算公式的值,


你的意思是参数不定,不然你原来的脚本不是已经达到目的了?

function compute(obj) {
    var a = [], i = 0, $li = $('li');
    for(;i < $li.length;i++){
        a[i] = $li.eq(0).text();
    }
    $(obj.el).html(
    obj.result(a)
    )
};
compute ({
    el : "#div1",
    result: function(arr){reutrn arr[0]+arr[1]}
});
compute ({
    el : "#div2",
    result: function(arr){return arr[0]*arr[1]/arr[2]+arr[3]}
});

<ul id="arguments">
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
</ul>
<h1 id="result"></h1>
function compute(params){
    var resultBox=params.resultBox,
        calculate=params.calculate,
        arguments=document.querySelectorAll('#arguments li'),
        resultBox=document.querySelector(resultBox),
        args=[];

    for(var i in arguments){
        var arg=arguments[i];
        args.push(Number(arg.innerText));
    }

    var result=calculate.apply(this,args);
    resultBox.innerText=result;
}

compute({
    resultBox:'#result',
    calculate:function(a,b,c){
        return a+b+c
    }
})

http://jsfiddle.net/windwhinny/X6Rtv/1/

【热门文章】
【热门文章】