search

Home  >  Q&A  >  body text

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

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: "#p1",resulte: function(a,b){return a+b}})在p1里面得到一个计算公式的值
compute({el: "#p2",resulte: function(a,b,c,d){return a*b/c+d}})在p2里面得到一个计算公式的值,

PHPzPHPz2894 days ago436

reply all(2)I'll reply

  • 阿神

    阿神2017-04-10 14:25:28

    <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/

    reply
    0
  • 黄舟

    黄舟2017-04-10 14:25:28

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

    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 : "#p1",
        result: function(arr){reutrn arr[0]+arr[1]}
    });
    compute ({
        el : "#p2",
        result: function(arr){return arr[0]*arr[1]/arr[2]+arr[3]}
    });
    

    reply
    0
  • Cancelreply