无法在JavaScript中连接字符串

时间:2016-02-29 23:03:49

标签: javascript html string string-concatenation

我正在尝试用javascript制作一个计算器。我的下面的代码点击按钮,并将它们作为字符串一起添加。当用户按下sum或equals按钮时,该函数应该将字符串计算为等式并记录结果。例如结果==" 2 * 10"应该返回20.我的问题是,不是这样做,而是将它加在一起,而不是乘以或做任何其他函数,如 - 或除。

这是我的代码:

var result = 0;

function calc(digit){

   if (digit == "sum"){
       console.log(eval(result)) ;
   }
   else if (digit == "-"){
       result + "-";
   }
   else if (digit == "+"){
       result + "+";
   }
   else if (digit == "*"){
       result + "*";
   }
   else if (digit == "/"){
       result + "/";
   }
   else if (digit == "."){
       result + ".";
   }
   else if (digit == "clear"){
       location.reload();
   }
   else{
       result += parseFloat(digit);
   }

}

以下是每个功能按钮点击的示例:

<button class="large" type="button" value="divide"onclick=calc("/")>/</button>

2 个答案:

答案 0 :(得分:3)

您需要使用赋值运算符。

例如,使用result + "-"而不是result += "-"。你在else块中有正确的想法。

无论如何,由于您的代码有多个if/else条件,因此最好使用switch语句

function calc(digit){
   switch(digit) {
       case: "sum":
           console.log(eval(result));
           break;
       case "-":
           result += "-";
           break;
       case "+":
           result += "+";
           break;
       case: "*":
           result += "*";
           break;
       case: "/":
           result += "/";
           break;
       case: ".":
           result += ".";
           break;
       case "clear":
           location.reload();
           break;
       default:
           result += parseFloat(digit); 
    }   
}

以下是有关JavaScript中字符串连接的更多信息

http://www.w3schools.com/jsref/jsref_concat_string.asp

答案 1 :(得分:2)

在if堆叠中,result + "-"没有做任何事情。要将减号添加到结果的末尾,您可以执行诸如

之类的操作
result  = result + "-";

result += "-";

目前,result + "-"系统会对结果和字符串进行连接,但会立即丢失,因为您没有将其存储回结果中。