求一个用JS正则表达式写的计算器 新手上路 请大家给我一个参考! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 [Quote=引用 2 楼 mubeibei 的回复:]引用楼主 a6312669 的回复:新手上路 请大家给我一个参考!楼主能说的具体点吗~·不是很明白[/Quote就是利用JavaScript 写出一个计算器里面要还有正则表达式的判断 我想请大家写一个给我参考参考 最简单的计算器<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> Jquery如何获取当前鼠标点击位置? 仿51job地区选择js,求高手帮改一小段 页面上的图片无法显示 1,能否从单元格取值?2,如果字数超过单元格的话,能否被单元格盖住? javascript解析json遇有个题,不知道各位遇到没有? Free HTML Editor v1.2 如何检查输入的用户名和密码里包含了空格? 求助两个问题:1使用CSS如何控制单击某行时该行出现一个黑色外边框?2表单中的checkbox的外观能否使用一图片代替? 如何取得点击了表格的第几行? sql if 查询数据库 奇怪的现象,没想通,求助! JSp window.open问题
引用楼主 a6312669 的回复:
新手上路 请大家给我一个参考!
楼主能说的具体点吗~·不是很明白
[/Quote
就是利用JavaScript 写出一个计算器
里面要还有正则表达式的判断
我想请大家写一个给我参考参考
<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>