新手上路 请大家给我一个参考!

解决方案 »

  1.   

    [Quote=引用 2 楼 mubeibei 的回复:]
    引用楼主 a6312669 的回复:
    新手上路 请大家给我一个参考!
    楼主能说的具体点吗~·不是很明白
    [/Quote
    就是利用JavaScript 写出一个计算器
    里面要还有正则表达式的判断 
    我想请大家写一个给我参考参考
      

  2.   

    最简单的计算器<br />
    <style type="text/css">
    input{ width:30px; margin:0 5px; padding:0; }
    #led{ width:150px; text-align:right; }
    </style>  <input type="text" value="" readonly="readonly" id="led" /><br />
      <input type="button" value="7" name="btn"
    /><input type="button" value="8" name="btn"
    /><input type="button" value="9" name="btn"
    /><input type="button" value="*" name="btn"/><br />
      <input type="button" value="4" name="btn"
    /><input type="button" value="5" name="btn"
    /><input type="button" value="6" name="btn"
    /><input type="button" value="/" name="btn" /><br />
      <input type="button" value="1" name="btn"
    /><input type="button" value="2" name="btn"
    /><input type="button" value="3" name="btn"
    /><input type="button" value="-" name="btn" /><br />
      <input type="button" value="0" name="btn"
    /><input type="button" value="." name="btn"
    /><input type="button" value="=" name="btn"
    /><input type="button" value="+" name="btn" /><script type="text/javascript">
    Array.prototype.collect = function(selector, limit) {
        var r = [];
        for (var i=0, len=this.length, limit=limit||len; i<len && r.length<limit; i++)
            if (!!selector(this[i], i, this))
                r.push(this[i]);
        return r;
    };
    Array.prototype.forEach = function(action) {
        this.collect(function(o, i, a) { action(o, i, a); }); return this;
    };(function() {
    var led = document.getElementById("led");
    var all = Array.prototype.collect.call(document.getElementsByName("btn"), function() { return true; });
    var num = all.collect(function(btn) { return /^\d$/.test(btn.value); });
    var opr = all.collect(function(btn) { return /^[+*\/]$/.test(btn.value); });
    var ptr = all.collect(function(btn) { return /^\.$/.test(btn.value); }, 1)[0];
    var res = all.collect(function(btn) { return /^\=$/.test(btn.value); }, 1)[0];
    var sub = all.collect(function(btn) { return /^\-$/.test(btn.value); }, 1)[0]; var reset = true;
    num.forEach(function(btn) {
    btn.onclick = function() {
    if (reset && !(reset=false)) { led.value = ''; }
    led.value = led.value + '' + this.value;
    };
    });
    opr.forEach(function(btn) {
    btn.onclick = function() {
    if (reset) return;
    led.value = led.value.replace(/[+\-*\/]*$/, this.value);
    led.value = led.value.replace(/^[+*\/]/, '');
    };
    });
    sub.onclick = function() {
    if (reset && !(reset=false)) { return led.value = '-'; }
    if (/[\d.]+[+*\/]?$/.test(led.value))
    return led.value = led.value + "-";
    };
    ptr.onclick = function() {
    if (reset && !(reset=false)) { return led.value = '-'; }
    var cNum = led.value.match(/[\d.]*$/)[0];
    if (reset && !(reset=false)) { led.value = ''; }
    led.value = led.value + "" +  ( (cNum == '') ? "0." : (/\./.test(''+cNum)) ? "" : "."  );
    };
    res.onclick = function() {
    if (!/^[\-\d.]+(?:[+\-*\/][\-\d.]+)*$/.test(led.value)) return;
    eval("led.value = '结果:' + (" + led.value.replace(/[\d.]+/g, function($0) { return $0.replace(/^0+\d/, ''); }) + ");");
    reset = true;
    };
    })();
    </script>