网页有ListBox控件ID为ListBoxRight,然后一个输入框,tb_calculation,以前ListBoxRight加入一些项后,可以在输入框输入相关公式,比如ListBoxRight加入B后,可以输入 [kpi].[b],点击验证按钮通过;
如果加入B,C后,可以输入 [kpi].[b]+[kpi].[c],点击验证按钮通过。
现在希望加入B后输入sum([kpi].[all])点击验证按钮时输入框会变成 [kpi].[b]
如果加入B,C后输入sum([kpi].[all]) 点击验证按钮时输入框会变成[kpi].[b]+[kpi].[c]
现在希望加入B后输入average([kpi].[all])点击验证按钮时输入框会变成 [kpi].[b]  或者[kpi].[b]/1也行
如果加入B,C后输入average([kpi].[all]) 点击验证按钮时输入框会变成([kpi].[b]+[kpi].[c])/2
JS 怎么写啊? 谢谢

解决方案 »

  1.   

    <select id="ListBoxRight">
    <option value="a">A</option>
    <option value="b">B</option>
    <option value="c">C</option>
    </select>
    <input type="text" id="tb_calculation" style="width:60%" /><input type="button" value="验证" onclick="check()"/>
    <script>
        function check() {
            var sel = document.getElementById('ListBoxRight'), txt = document.getElementById('tb_calculation');
            var arr = [],rst='';
            for (var i = 0; i < sel.options.length; i++) {
                arr[i] = "[kpi].[" + sel.options[i].value + "]";
            }
            switch (txt.value) {
                case 'sum([kpi].[all])': rst = arr.join('+'); break;
                case 'average([kpi].[all])': rst = arr.length == 1 ? arr[0] : "(" + arr.join('+') + ")/" + arr.length; break;
            }
            txt.value = rst;
        }
    </script>