如何在JavaScript中存储变量并对其进行计算?

如何在JavaScript中存储变量并对其进行计算?,javascript,html,css,Javascript,Html,Css,函数计算器{ num1=document.getElementById'n1'。值; num1=parseIntnum1; num2=document.getElementById'n2'。值; num2=parseIntnum2; 如果num1 | | num2

函数计算器{ num1=document.getElementById'n1'。值; num1=parseIntnum1; num2=document.getElementById'n2'。值; num2=parseIntnum2; 如果num1 | | num2<0{ number1=num1*-1; number2=num2*-1; }否则{ top=编号1%编号2; div=num1-顶部; 底部=div/编号2; } getElementById'OutputDiv'.innerHTML=bottom; document.getElementById'OutputDiv2'。innerHTML=top+/+number2; }
此代码存在许多问题

// By convention only constructors should start with a capital letter.
// Not a show-stopper, but of note.
function Calculator() {
  // These values should be defined ... most likely here with the
  // `var`, `let` or `const` keyword.
  num1 = document.getElementById('n1').value;
  // Older versions of JavaScript required a `radix` operator for parseInt
  // Many consider it good practice to use anyways today.
  // num1 = parseInt(num1, 10);
  num1 = parseInt(num1);
  num2 = document.getElementById('n2').value;
  num2 = parseInt(num2);

  // This does not do what you think.
  // Try: if (num1 < 0 || num2 < 0)
  if (num1 || num2 < 0) {
    number1 = num1 * -1;
    number2 = num2 * -1;
  } else {
    top = number1 % number2;
    div = num1 - top;
    bottom = div / number2;
  }



  document.getElementById('OutputDiv').innerHTML = bottom;
  document.getElementById('OutputDiv2').innerHTML = top + "/" + number2;
}

您正在使用前面在if块中定义的num1和num2进行计算,这很好。您的错误是当您尝试执行此操作时,top=number1%number2;您事先没有定义它们,因此它们不是数字

如果执行If块,则永远不会执行else块,反之亦然。必须在if/else块之前定义变量,以确保使用已定义的变量而不是未定义的变量

另外,我想说的是,你的代码对我来说没有意义。要让它有意义,需要解决不止一件事。您应该澄清您试图计算的是什么,以便我们可以提供一个比现在更清晰的代码

正如Jeremy所提到的,确保用关键字let、var和const声明变量

由单个管理的多个 这是一个简单的问题,因为这个问题与用户传递的负数有关,但显然还有更紧迫的问题需要解决

只看数学部分…它没有什么意义

在语法上,它缺少一些基本的东西,比如声明变量,我想Python处理变量的方式是不同的

解决方案 下面的演示涉及需要使用标记的属性。它将执行以下操作:

将输入事件绑定或注册到调用计算函数。 calculate是一个回调函数,每当用户在 用户输入两个数字:nA和nB 传递事件对象以引用DOM元素并提取其值并显示结果

calculate(event) {...
和、差、积和商将显示在四个单独的标记中

至于你最初问题的答案,或者从技术上讲,你最初感觉到的问题的陈述:

当我输入负数时,结果应该总是弹出正数

用于返回给定数字的绝对值

细节在演示中进行了注释 参考资料在文章的末尾

演示 /* 参考 请参见参考-获取表单元素对象 */ const calc=document.forms.calc; /* 将输入事件注册到 请参阅引用-DOM OneEvent处理程序和HtmleElement:input事件 */ 计算输入=计算; /* 传递事件对象 参见参考资料-活动简介 */ 函数计算事件{ /* 引用注册到事件的标记 -event.currentTarget 请参阅参考资料-事件目标的比较 收集其中的所有表单控件 -.要素属性 请参见参考-被视为表单控件的元素 */ 常量io=event.currentTarget.elements; /* 引用标签 -io.i1 获取其当前值 -.价值 将值字符串转换为数字 -parseFloat 得到结果的绝对值 -数学abs 对第二个标记重复相同的过程 */ 设nA=Math.absparseFloatio.i1.value; 设nB=Math.absparseFloatio.i2.value; /* 使用[name=n1]收集所有表单控件 使用[name=n2]收集所有表单控件 请参阅参考-HTMLFormControlsCollection */ 常量HTMLCollectionA=io.n1; 常量HTMLCollectionB=io.n2; //循环遍历每个集合,并将其.value设置为用户值 对于let i=0;i这些变量是在哪里定义的?你做的是1%麻木
er2在else块中,但在if中为这些变量赋值block@adiga之前我试着同时将它放在else块和if块中,但它仍然表示未定义。我还定义了if和else块之外的内容,它仍然说同样的事情。哦,对于var编号,我做了,但我没有把它放在Stackoverflow中,因为你不能在Stackoverflow中放太多的代码defined@ObnoxiousNerd我说我在自己的代码中定义了它,我没有把它放在Stackoverflow中,因为你可以放的代码数量是有限的。请解释:1。这个代码的目的是什么?例如,传入2个数字并返回总和2。提供一个由输入示例2和8、3组成的示例。提供一个你期望的例子,例如10,4。提供一个示例,说明您实际得到的信息是不正确的还是错误消息,例如NaN。只看数学部分…它没有什么意义。从语法上讲,它缺少一些基本的东西,比如声明变量。我想Python处理变量的方式不同。当我输入一个负数时,它仍然放了一个未定义的数字。在我的示例注释中,输出应该是正数。很好,@pensum,这正是我想告诉你的
calculate(event) {...