如何使用javascript在计算器中添加小数?
我需要有关计算器中十进制按钮的帮助。它现在不知怎么工作了,但我需要更加完善它,有点不知道怎么做。所以,如果你知道如何让它变得更好,请帮助。因此,如果你知道如何修复它,请做。多谢各位如何使用javascript在计算器中添加小数?,javascript,html,css,decimal,Javascript,Html,Css,Decimal,我需要有关计算器中十进制按钮的帮助。它现在不知怎么工作了,但我需要更加完善它,有点不知道怎么做。所以,如果你知道如何让它变得更好,请帮助。因此,如果你知道如何修复它,请做。多谢各位 如何在printOutput中添加小数 问题是,当我按下数字,然后按下十进制,它可以工作,例如2.34,但问题是你可以在每个数字之后按下十进制,例如2.3.4,这不是我想要的 这是一个javascript代码>>>>>> function getHistory() { return document.getE
function getHistory() {
return document.getElementById("history-value").innerHTML;
}
function printHistory(num) {
document.getElementById("history-value").innerHTML = num;
}
function getOutput() {
return document.getElementById("output-value").innerHTML;
}
function printOutput(num) {
if (num == "") {
document.getElementById("output-value").innerHTML = num;
} else {
document.getElementById("output-value").innerHTML = getFormatNumber(num);
}
}
function getFormatNumber(num) {
if (num == "-") {
return "";
}
if (num.length > 10) {
num = num.substr(0, 10);
alert("it tooo much!");
}
var n = Number(num);
if (n === "Infinity") {
value = "0";
alert("Error");
} else {
var value = n.toLocaleString("en");
}
return value;
}
function reverseNumberFormat(num) {
return Number(num.replace(/,/g, ""));
}
let operator = document.getElementsByClassName("operator");
for (let i = 0; i < operator.length; i++) {
operator[i].addEventListener("click", function () {
if (this.id == "clear") {
printOutput("");
printHistory("");
} else if (this.id == "backspace") {
let output = reverseNumberFormat(getOutput()).toString();
if (output) {
output = output.substr(0, output.length - 1);
printOutput(output);
}
} else {
let output = getOutput();
let history = getHistory();
if (output == "" && history != "") {
if (isNaN(history[history.length - 1])) {
history = history.substr(0, history.length - 1);
}
}
if (output != "" || history != "") {
output = output == "" ? output : reverseNumberFormat(output);
history = history + output;
if (this.id == "=") {
let result = eval(history);
printOutput(result);
printHistory("");
} else {
history = history + this.id;
printHistory(history);
printOutput("");
}
}
}
});
}
let number = document.getElementsByClassName("number");
for (let i = 0; i < number.length; i++) {
number[i].addEventListener("click", function () {
let output = reverseNumberFormat(getOutput());
if (output != NaN) {
output += this.id;
printOutput(output);
}
});
}
函数getHistory(){
return document.getElementById(“历史值”).innerHTML;
}
函数printHistory(num){
document.getElementById(“历史值”).innerHTML=num;
}
函数getOutput(){
return document.getElementById(“输出值”).innerHTML;
}
函数printOutput(num){
如果(num==“”){
document.getElementById(“输出值”).innerHTML=num;
}否则{
document.getElementById(“输出值”).innerHTML=getFormatNumber(num);
}
}
函数getFormatNumber(num){
如果(数值=“-”){
返回“”;
}
如果(数值长度>10){
num=num.substr(0,10);
警惕(“太多了!”);
}
var n=数量(num);
如果(n==“无穷大”){
value=“0”;
警报(“错误”);
}否则{
var值=n.toLocaleString(“en”);
}
返回值;
}
函数反转枚举格式(num){
返回编号(num.replace(/,/g,”);
}
let operator=document.getElementsByClassName(“operator”);
for(设i=0;i
C
总工程师
%
÷
7.
8.
9
&时代;
4.
5.
6.
-
1.
2.
3.
+
0
.
=
一些更改是必要的
第一(1):将点
运算符类名更改为编号
,如下所示
<button class="number" id=".">.</button>
-属于类别号的所有元素的处理程序中的第三(3)个事件处理程序
let number = document.getElementsByClassName("number");
for (let i = 0; i < number.length; i++) {
number[i].addEventListener("click", function () {
let output = reverseNumberFormat(getOutput());
if (output != NaN ) {
output += this.id;
// CHECK HERE IF output is already a valid decimal number
let matchCount = output.match(/\./g) ;
if( matchCount && matchCount.length > 1 ) return ; // => already decimal number
printOutput(output);
}
});
}
注:这是有益的,它在我这方面的工作,但不要犹豫,告诉我任何错误或问题在未来
function getFormatNumber(num) {
if (num == "-") {
return "";
}
if (num.length > 10) {
num = num.substr(0, 10);
alert("it tooo much!");
}
// to check whether a dot is placed just a the end of num like 6.
let lastIndexOfDot = num.toString().lastIndexOf(".") ;
let isDotted =lastIndexOfDot == false ? false: lastIndexOfDot == num.length-1 ? true : false ;
var n = Number(num);
if (n === "Infinity") {
value = "0";
alert("Error");
} else {
var value = n.toLocaleString("en");
}
// if dotted is true then value has a dot at the end like : 5. so we return value with its dot
if (isDotted ) return value +"." ;
return value; // no dot at the end
}
let number = document.getElementsByClassName("number");
for (let i = 0; i < number.length; i++) {
number[i].addEventListener("click", function () {
let output = reverseNumberFormat(getOutput());
if (output != NaN ) {
output += this.id;
// CHECK HERE IF output is already a valid decimal number
let matchCount = output.match(/\./g) ;
if( matchCount && matchCount.length > 1 ) return ; // => already decimal number
printOutput(output);
}
});
}
function reverseNumberFormat(num) {
return num.replace(/,/g, ""); // => Nb: conversion not necessary
}