大家好, 在下刚学JS不久,模拟了一个计算器,用DIV,已经实现了基本的加减乘除的效果,现在要做一个可以计算a的N次方的效果,就像WINXP系统里自带的那个计算器一样:当我点2,会将2的值赋给a,然后我再点一个计算N次方的按键,这时系统知道我要进行次方运算,然后我再点下3,将3的值赋给N,系统会自动执行3个2相乘的运算,然后点=号,输出结果.如位高手可以指点一下,这个计算 N次方的按键 怎么做出来?

解决方案 »

  1.   

    Math.pow(3,3) = 27;
    Math.pow(2,3) = 8;
      

  2.   


    计算M的N次方 ==> Math.pow(M, N)
      

  3.   

    Math.pow
      

  4.   

    O~~~~My god......这种方法是挺简单,不过现在的问题是,在不用Math.pow的情况下,用for循环能不能做出M的N次方
      

  5.   

    写个不完整版的,只计算两个数的。多个的或者复杂的要重写。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <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>