2016-09-22 45 views
-2

我刚刚开始用js编程,遇到了一些麻烦。我不能失去更多的时间,我想也许有更多的眼睛可以找到问题。 这将是一个简单的网页浏览器计算器。几乎相同的代码为其他按钮(0-9)JS NaN array [index]

sum = 0; 
var actual = new Array(0); 
var counter = 0; 

function button1pressed(){ 

if(counter==0){ 
    actual.push(1); 
    counter=1; 

    sum=actual[0]; 
}else{ 
    actual.push(1); //Insert new number 

     counter=counter*10; 
    for(i = actual.length; i > 0; i--){ 
     sum = sum + actual[i] * counter; 
    } 


} 
document.getElementById("display").innerHTML = sum; 
sum = 0; 
} 

我做错了什么?

+1

JavaScript数组被索引起点从0到'length - 1',所以'actual' [']''undefined'当'i'是'actual.length'时。 – Pointy

回答

1

actual.length-1开始循环,因为每个数组从0开始,所以最后一个元素是actual.length-1而不是actual.length

+0

是的,这个工作完全忘记了,谢谢。逻辑,但我不知道这一个自己 – SpaceNinjaApe

+0

欢迎您@SpaceNinjaApe –

0

我看你的计算器代码太复杂了。

你这样做低级操作,增加只是 “1” 你乘万物10再加1

是简单的(;

var inputElement = document.getElementById("input"); 
 
var resultElement = document.getElementById("result"); 
 

 
var accept = [0,1,2,3,4,5,6,7,8,9,'-','+','calc']; 
 
var input = []; 
 
function op(value){ 
 
    if(accept.indexOf(value) < 0) { 
 
    return; 
 
    } 
 
    
 
    if(value == 'calc') { 
 
    return calc(); 
 
    } 
 
    
 
    input.push(value); 
 
    inputElement.innerHTML = input.join(''); 
 
} 
 

 
function calc() { 
 
    resultElement.innerHTML = eval(input.join('')); 
 
    input = []; 
 
}
<button onclick="op(1)">1</button> 
 
<button onclick="op(2)">2</button> 
 
<button onclick="op(3)">3</button> 
 
<br/> 
 
<button onclick="op(4)">4</button> 
 
<button onclick="op(5)">5</button> 
 
<button onclick="op(6)">6</button> 
 
<br/> 
 
<button onclick="op(7)">7</button> 
 
<button onclick="op(8)">8</button> 
 
<button onclick="op(9)">9</button> 
 
<br/> 
 
<button onclick="op(0)">0</button> 
 
<button onclick="op('.')">.</button> 
 
<button onclick="op('calc')">=</button> 
 
<hr/> 
 
<button onclick="op('+')">+</button> 
 
<button onclick="op('-')">-</button> 
 
<hr/> 
 
INPUT:<div id="input"></div> 
 
DISPLAY:<div id="result"></div>