Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript计算器未在输入中计算_Javascript - Fatal编程技术网

Javascript计算器未在输入中计算

Javascript计算器未在输入中计算,javascript,Javascript,我正在尝试制作我自己的简单的短javascript计算器,但我似乎采取了与我找到的任何教程不同的方法,我在代码中找不到错误 <!DOCTYPE html> <head> <meta charset = 'utf-8'> </head> <html> <body> <input name='x' onchange='this.value=eval(this.value)'> <br> &

我正在尝试制作我自己的简单的短javascript计算器,但我似乎采取了与我找到的任何教程不同的方法,我在代码中找不到错误

   <!DOCTYPE html>
<head>
  <meta charset = 'utf-8'>
</head>

<html>
<body>
  <input name='x' onchange='this.value=eval(this.value)'>
<br>
<button>1</button>
<button>2</button>
<button>3</button>
<br>
<button>4</button>
<button>5</button>
<button>6</button>
<br>
<button>7</button>
<button>8</button>
<button>9</button>
<br>
<button>0</button>
<button>.</button>
<button>+</button>
<br>
<button>*</button>
<button>/</button>
<button id='enter'>=</button>

<script>
function el(x){return document.querySelector(x);}
function els(x){return document.querySelectorAll(x);}

var x=el("input");
function g(){x.value+=this.innerHTML;}
var t = els("button");
  for(i=0;i<t.length;i++){
  t[i].onclick=g;
}


1. 2. 3.
4. 5. 6.
7. 8. 9
0 . +
* / = 函数el(x){returndocument.querySelector(x);} 函数els(x){returndocument.querySelectorAll(x);} var x=el(“输入”); 函数g(){x.value+=this.innerHTML;} var t=els(“按钮”);
对于(i=0;i您标记的两行肯定是个问题,它们毫无意义。您不能将
onclick
设置为
HTMLInputElement
,对元素集合(
t
)调用
eval
)也没有任何意义

除此之外,您的基本方法是合理的。您只希望
=
按钮上的处理程序执行与
更改处理程序中相同的操作。因为您希望它们执行相同的操作,所以将该逻辑放在一个函数中,这两个函数都调用:

function calcuate() {
    x.value = eval(x.value);
}
然后:


有了这些变化,一切都很好:

函数el(x){
返回单据查询选择器(x);
}
函数els(x){
返回文档。查询选择全部(x);
}
var x=el(“输入”);
函数g(){
x、 value+=this.innerHTML;
}
var t=els(“按钮”);
对于(i=0;i


1. 2. 3.
4. 5. 6.
7. 8. 9
0 . +
* /
=
好的,您采取了不同的方法。问题是什么?它是否工作不正常?如果是,它是如何工作不正常的?您看到了哪些您不期望的结果?为什么要将
onclick
设置为
input
元素?为什么要将
innerHTML
设置为
eval(t)
t
是元素的集合时?从一个有意义的方法开始。所示的逻辑肯定没有意义,我们在这里不是为了写这整件事you@charlietfl:事实上,以上大部分都很好。。。
function calcuate() {
    x.value = eval(x.value);
}
el('#enter').onclick = calcuate;
<input name="x" onchange="calcuate();">