大家好, 在下刚学JS不久,模拟了一个计算器,用DIV,已经实现了基本的加减乘除的效果,现在要做一个可以计算a的N次方的效果,就像WINXP系统里自带的那个计算器一样:当我点2,会将2的值赋给a,然后我再点一个计算N次方的按键,这时系统知道我要进行次方运算,然后我再点下3,将3的值赋给N,系统会自动执行3个2相乘的运算,然后点=号,输出结果.如位高手可以指点一下,这个计算 N次方的按键 怎么做出来?
调试欢乐多
Math.pow(2,3) = 8;
计算M的N次方 ==> Math.pow(M, N)
<html lang="ru">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<style type="text/css">
.box{
width:168px;
height:168px;
padding:0px;
}
.box li{
display: block;
float: left;
width: 38px;
height: 38px;
border: 1px solid #CCC;
background-color:#ffe;
cursor:pointer;
text-align:center;
line-height: 38px;
margin:1px;
}
#calc{
margin:auto;
text-align:center;
} .s{
margin:1px;
width:164px;
height:100%;
border: 1px solid #dd0;
text-align:right;
}
</style>
<script type="text/javascript">
function Calc()
{
this.record = new Object();
this.setNumber1 = function(value)
{
this.record['v1'] = value;
}
this.setNumber2 = function(value)
{
this.record['v2'] = value;
}
this.getNumber1 = function()
{
return this.record['v1'];
}
this.getNumber2 = function()
{
return this.record['v2'];
}
this.setOprater = function(value)
{
this.record['op'] = value;
}
this.getOprater = function()
{
return this.record['op'];
}
this.getResult =function()
{
var result = 0;
switch(this.record['op']){
case '+' : result=parseFloat(this.record['v1'])+parseFloat(this.record['v2']);break;
case '-' : result=parseFloat(this.record['v1'])-parseFloat(this.record['v2']);break;
case '*' : result=parseFloat(this.record['v1'])*parseFloat(this.record['v2']);break;
case '/' : result=parseFloat(this.record['v1'])/parseFloat(this.record['v2']);break;
case 'xy' : result=Math.pow(parseFloat(this.record['v1']),parseFloat(this.record['v2']));break;
default : result=0;break;
}
return result;
}
}
var calc = new Calc();
calc.setNumber1(0);
calc.setOprater('');
calc.setNumber2(0);
window.onload=function(){
var lis = document.getElementsByTagName("li");
for(i=0;i<lis.length;i++)
{
var li = lis[i];
li.onclick=function(){
if(this.innerHTML=="ce")
{
//清除内容
document.getElementById("result").innerHTML="0";
calc.setNumber1(0);
calc.setOprater('');
calc.setNumber2(0);
}else
{
if(this.innerHTML!="=")
{
if(/\+|-|\*|\/|xy/.test(this.innerText))
{
calc.setOprater(this.innerText);
}else
{
if(calc.getOprater()!="")
{
calc.setNumber2(calc.getNumber2()+this.innerHTML);
}else
{
calc.setNumber1(calc.getNumber1()+this.innerHTML);
}
}
var temp = document.getElementById("result").innerHTML;
document.getElementById("result").innerHTML=temp.replace(/^0+$/,'')+this.innerHTML;
}else
{
if(calc.getOprater()=="")
{
calc.setOprater('+');
}
document.getElementById("result").innerHTML =calc.getResult();
calc.setNumber1(calc.getResult());//将结果设置到number1
calc.setOprater('+'); //默认加法操作
calc.setNumber2(0);
}
}
}
}
};
</script>
</head>
<body>
<div id="result" class="s">0</div>
<div id="calc">
<ul class="box">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>0</li>
<li>ce</li>
<li>=</li>
<li>+</li>
<li>-</li>
<li>*</li>
<li>/</li>
<li>x<sup>y</sup></li>
</ul>
</div>
</body>
</html>