如果用户输入2 + 2,我想要(例如,我的提示是输入计算) document.write(sum); 应该在我的空白页上显示4。我知道如何轻松地通过2个提示来做到这一点,但我正在尝试制作一种计算器。我已经在Google或数学方法上看到了这一点,您可以在其中键入一长串数字和运算符,然后给出步骤,最后给出答案。 我需要一种方法来检索第一个项目,然后第二个项目,然后第三个项目,然后将它们存储在变量中。如果我最终能做到像22 + 22,但不确定如何工作,那将是很棒的。 userInput.includes(“ +”)可能已经足够好了,因为没有其他时间了。
//if (userInput.includes(allNumbers && "+")){
// value1 = userInput.split("").map(parseInt).filter(i =>!isNaN(i))[0]
//value2 = parseint(userInput);
// sum = value1 + value1;
//document.write(sum);
//}
我已经尝试过了,但是当我输入2 + 2时什么也没发生。香港专业教育学院试图寻找整个互联网,但我所看到的是所有的字符串输入或一个数字,然后第二个第二个pprmt。
我希望当用户为document.write键入2 + 2时显示4。然后我最终希望进行减法,除法和乘法。但目前2 + 2什么也没做
答案 0 :(得分:3)
更好的方法是将计算分为几部分,并遵循BEDMAS规则:
这是基本计算器的非常全面的概述,只需将所有项目展平,直到获得最终值(假设当然没有变量;)。
这是一种入门方法:
var mathParts =“ 1 + 2-((3 +(2 * 3/3))* 5 ^ 2)/ 6” .match(/ [0-9()^ / * +-] / g) ;
数学零件:(23)[“ 1”,“ +”,“ 2”,“-”,“(”,“(”,“ 3”,“ +”,“(”,“ 2”,“ ”,“ 3”,“ /”,“ 3”,“)”,“)”,“ ”,“ 5”,“ ^”,“ 2”,“)”,“ / “,” 6“]
现在,您要做的就是遍历数组(mathParts
),并在每次点击(
时增加嵌套级别,并在每次点击)
时降低嵌套级别。之后使用多次传递:第一次传递(或循环)处理指数(^
),然后在下一次传递中使用/
,在下一次传递中使用*
,再通过+
,然后-
。
如果仅运行此客户端,并去除所有非数学字符(不允许$ _AtoZ [])并仅允许数学所需的符号,那么它也应足够安全,只需使用{{1进行计算。如果使用正确并且仅由客户端网页上的用户使用,这是安全的,因为这些用户已经可以按F12键,并且可以根据需要入侵该网站;因此,在这种情况下,避免评估是没有意义的。我建议您采用这种方式在eval()
范围内运行eval()
,以便它在全局级别上运行,而不是在您自己的代码范围内运行(以使私有事物保持私有)。
答案 1 :(得分:2)
https://www.npmjs.com/package/calculator-scripts
节点模块
为什么要在有模块的情况下全部自己编写。您将需要一个节点环境。我可以根据您的经验水平,为您提供一些简单而又困难的方法,让我知道您是否需要帮助。