0

下面是我的代码。. .

<div id="calc">

<input id="screen"></div>
<div id="subkeys">
<div  class="btn1">log</div>
<div  class="btn1">ln</div>
<div  class="btn1">(-)</div>
<div  class="btn1">sin</div>
<div  class="btn1">cos</div>
<div  class="btn1">tan</div>
<div  class="btn1">sin<sup>-1</sup></div>
<div  class="btn1">cos<sup>-1</sup></div>
<div  class="btn1">tan<sup>-1</sup></div>
</div>
<div id="mainkeys">
<div name="del" value="" onClick="rundel()" class="btn2 btn-del">DEL</div>
<div name="minus" value="-" onClick="runminus()" class="btn2 btn-minus">-</div>
<div name="multi" value="x" onClick="runmulti()" class="btn2 btn-multi">x</div>
<div name="plus" value="+" onClick="runplus()" class="btn2 btn-plus">+</div>
<div name="1" value="1" onClick="addDigit(1)" class="btn2 num">1</div>
<div name="2" value="2" onClick="addDigit(2)" class="btn2 num">2</div>
<div name="3" value="3" onClick="addDigit(3)" class="btn2 num">3</div>
<div name="div" value="÷" onClick="rundiv()" class="btn2 btn-div">÷</div>
<div name="ans" value="ans" onClick="runans()" class="btn2 btn-ans">ANS</div>
<div name="0" value="0" onClick="addDigit(0)" class="btn2 num">0</div>
<div name="eq" value="=" onClick="runeq()" class="btn2 btn-eq">=</div>
</div>

<script>
function addDigit(digit) {  
document.getElementById('output').value += digit;     
}
function rundel(){document.getElementById('output').value = "";}
function runminus(){document.getElementById('output').value = "";}
function runplus(){document.getElementById('output').value = "";}
function rundiv(){document.getElementById('output').value = "";}
function runmulti(){document.getElementById('output').value = "";}
function runeq(){
var result = eval(document.getElementById('output').value = "")
    document.getElementById('output').value = result;
}
</script>

当我尝试对两个数字进行加、减、除或相乘时,我得到的结果是未定义的,我想要结果,即,当我按 + 键时,结果应该是这些键的加法,如何解决此错误。. .

这是链接

4

2 回答 2

0

eval邪恶的......你应该尽量不要使用 eval.. 除非绝对必要......你可以将最后一个输入和当前操作存储在一个变量中......并进行计算......但是......这很难维护而不是简单地使用 eval...

例如......你可以做这样的事情...... jsfiddle 演示示例

var lastInput = 0; //storing last input
var curOp; // current operation.. plus,minus,div etc...

function addDigit(digit) {
    document.getElementById('output').value += digit;
}

function runeq() {
    var result = 0;
    switch (curOp) {
    case "minus":
        result = lastInput - getValue();
        break;
        case "plus" :
                    result = lastInput + getValue();
        break;
        case "div" :
                    result = lastInput / getValue();
        break;      
        case "multi" :
                    result = lastInput * getValue();
         break;
    default:
        result = 0;
        break;
    }
    document.getElementById('output').value = result;
    curOp = 0 ;
    lastInput = getValue();
}

function rundel(){
    lastInput = 0;
curOp = 0 ;
clearScreen();}
function runminus() {
    curOp = "minus";
    lastInput = getValue();
    //for testing.. 
    document.getElementById('test').value = lastInput;
    clearScreen();
}

function runplus() {
    curOp = "plus";
    lastInput = getValue();
    //for testing.. 
    document.getElementById('test').value = lastInput;
    clearScreen();
}

function rundiv() {
    curOp = "div";
    lastInput = getValue();
    //for testing.. 
    document.getElementById('test').value = lastInput;
    clearScreen();
}

function runmulti() {
    curOp = "multi";
    lastInput = getValue();
    //for testing.. 
    document.getElementById('test').value = lastInput;
    clearScreen();
}

function getValue() {
    return parseInt(document.getElementById('output').value,10) ;
}

function clearScreen() {
    document.getElementById('output').value = "";
}
于 2013-10-21T11:47:03.873 回答
0
<script>
function addDigit(digit) {  
document.getElementById('output').value += digit;     
}
function rundel(){document.getElementById('output').value = "";}
function runminus(){document.getElementById('output').value = "";}
function runplus(){document.getElementById('output').value = "";}
function rundiv(){document.getElementById('output').value = "";}
function runmulti(){document.getElementById('output').value = "";}
function runeq(){
var result = eval(document.getElementById('output').value);
    document.getElementById('output').value = result;
</script>

尝试这个...

于 2013-10-21T10:35:02.333 回答