Javascript计数错误

Javascript计数错误,javascript,html,Javascript,Html,我创建了一个javascript计算器,我使用变量处理所有事情,但它不起作用。 我试着使用document.getElementById(“box1”).valueistead of justv1,我发现有些东西改变了,我得到了1111如果我键入11+11,它不同了,为什么? 我不知道是什么问题,我尝试了一些东西,但没有改变 这是我的密码: JS计算器 + - * / 检查 var v1=document.getElementById(“box1”).value; var v2=docume

我创建了一个javascript计算器,我使用变量处理所有事情,但它不起作用。
我试着使用
document.getElementById(“box1”).value
istead of just
v1
,我发现有些东西改变了,我得到了
1111
如果我键入
11+11
,它不同了,为什么?
我不知道是什么问题,我尝试了一些东西,但没有改变

这是我的密码:

JS计算器
+
-
*
/
检查
var v1=document.getElementById(“box1”).value;
var v2=document.getElementById(“box2”).value;
var sel=document.getElementById(“选择”).value;
var out=document.getElementById(“输出”).innerHTML;
函数计数(){
如果(sel==“+”){
out=v1+v2;
}
否则如果(sel==“-”){
out=v1-v2;
}
如果(sel==“*”),则为else{
out=v1*v2;
}
否则如果(sel==“/”){
out=v1/v2;
}
否则{
out=“Error!”
}
}

脚本中有3个问题

首先,您应该在count()函数中获取元素值(因为您希望在每次有人单击check按钮时读取这些值)

其次,您不应该读取输出值,而应该将其写入

第三,必须将输入值强制转换为int,以避免出现如下情况:1+1=11

function count() {
  var v1 = parseInt(document.getElementById("box1").value);
  var v2 = parseInt(document.getElementById("box2").value);
  var sel = document.getElementById("select").value;
  var out;
  if (sel === "+") {
    out = v1 + v2;
  } else if (sel === "-") {
    out = v1 - v2;
  } else if (sel === "*") {
    out = v1 * v2;
  } else if (sel === "/") {
    out = v1 / v2;
  } else {
    out = "Error Error Error!"
  }
  document.getElementById("output").innerHTML = out;
}

脚本中有3个问题

首先,您应该在count()函数中获取元素值(因为您希望在每次有人单击check按钮时读取这些值)

其次,您不应该读取输出值,而应该将其写入

第三,必须将输入值强制转换为int,以避免出现如下情况:1+1=11

function count() {
  var v1 = parseInt(document.getElementById("box1").value);
  var v2 = parseInt(document.getElementById("box2").value);
  var sel = document.getElementById("select").value;
  var out;
  if (sel === "+") {
    out = v1 + v2;
  } else if (sel === "-") {
    out = v1 - v2;
  } else if (sel === "*") {
    out = v1 * v2;
  } else if (sel === "/") {
    out = v1 / v2;
  } else {
    out = "Error Error Error!"
  }
  document.getElementById("output").innerHTML = out;
}

您的代码中有几个错误

a) 方法count()中的代码无法看到用户输入的值,因为设置值的代码会在用户有机会写东西之前立即执行

b) .innerHTML返回的值只是一个值,不能更新。您需要在HTML元素上设置innerHTML

document.getElementById("output").innerHTML = out; 

c) 从.innerHTML读取的值是字符串,因此求和将计算字符串的串联,而不是您想要的。乘法根本不起作用。

代码中有几个错误

function count() {
    var v1 = document.getElementById("box1").value;
    var v2 = document.getElementById("box2").value;
    var sel = document.getElementById("select").value;
    if (sel === "+") {
         document.getElementById("output").innerHTML = +v1 + +v2;
    }
    else if (sel === "-") {
         document.getElementById("output").innerHTML = parseInt(v1 - v2);
    }
    else if (sel === "*") {
         document.getElementById("output").innerHTML = parseInt(v1 * v2);
    }
    else if (sel === "/") {
         document.getElementById("output").innerHTML = parseInt(v1 / v2);
    }
    else {
         document.getElementById("output").innerHTML = "Error Error Error!"
    }
}
a) 方法count()中的代码无法看到用户输入的值,因为设置值的代码会在用户有机会写东西之前立即执行

b) .innerHTML返回的值只是一个值,不能更新。您需要在HTML元素上设置innerHTML

document.getElementById("output").innerHTML = out; 
c) 从.innerHTML读取的值是字符串,因此求和将计算字符串的串联,而不是您想要的。乘法根本行不通

function count() {
    var v1 = document.getElementById("box1").value;
    var v2 = document.getElementById("box2").value;
    var sel = document.getElementById("select").value;
    if (sel === "+") {
         document.getElementById("output").innerHTML = +v1 + +v2;
    }
    else if (sel === "-") {
         document.getElementById("output").innerHTML = parseInt(v1 - v2);
    }
    else if (sel === "*") {
         document.getElementById("output").innerHTML = parseInt(v1 * v2);
    }
    else if (sel === "/") {
         document.getElementById("output").innerHTML = parseInt(v1 / v2);
    }
    else {
         document.getElementById("output").innerHTML = "Error Error Error!"
    }
}
如果将
v1
v2
sel
放在
count()
函数之前,它们将以初始值启动,表示空、空和+

您必须使用
parseInt
将输出解析为整数

请注意,
+v1
直接将字符串转换为int

如果将
v1
v2
sel
放在
count()
函数之前,它们将以初始值启动,表示空、空和+

您必须使用
parseInt
将输出解析为整数

请注意,
+v1
直接将字符串转换为int


您的代码存在多个问题:

  • 您必须在
    count()
    中分配
    v1
    v2
    sel
    ,否则在页面加载时只设置一次

  • 变量
    out
    在代码中被覆盖。您应该这样分配它:

var out=document.getElementById(“输出”)

out.innerHTML=“foo”

  • 您必须使用
    parseInt()
您可以在此处找到JSBin:


祝您计算器好运:)

您的代码有多个问题:

  • 您必须在
    count()
    中分配
    v1
    v2
    sel
    ,否则在页面加载时只设置一次

  • 变量
    out
    在代码中被覆盖。您应该这样分配它:

var out=document.getElementById(“输出”)

out.innerHTML=“foo”

  • 您必须使用
    parseInt()
您可以在此处找到JSBin:


祝你好运:)

希望我能回答。无论如何,你的问题是你的变量启动得太早,一旦你点击检查它就会得到错误的值。这是一把小提琴,你可以看得更清楚:)对不起,你的问题已经结束了。您的代码中有几个错误。a) 方法count()中的代码无法看到用户输入的值,因为设置值的代码会在用户有机会写东西之前立即执行。b) .innerHTML返回的值只是一个值,不能更新。您需要在HTML元素document.getElementById()上设置innerHTML;c) 您从.innerHTML读取的值是字符串,因此求和将计算字符串的串联,而不是您想要的。@BipBip您现在可以回答了。希望我能回答。无论如何,你的问题是你的变量启动得太早,一旦你点击检查它就会得到错误的值。这是一把小提琴,你可以看得更清楚:)对不起,你的问题已经结束了。您的代码中有几个错误。a) 方法count()中的代码无法看到用户输入的值,因为设置其值的代码是execut