Как передать идентификатор кнопки в операторе switch, чтобы выполнить функцию, которую должна выполнять эта кнопка? - PullRequest
0 голосов
/ 11 октября 2018

Это простой калькулятор, использующий HTML и Javascript, и я должен использовать оператор switch, чтобы выбрать, какую математическую операцию выполнять после нажатия соответствующей кнопки.Я не знаю, что я должен пройти внутри коммутатора, хотя.Это мой код.

<html>
<head>
<style>
p{
color:white;
 background-color:black;
 } 
 </style>
<script>
function simple_calculator(){
 var numl=0;
 var num2=0;
 var result=0;
  num1 = document.getElementById("no1").value;
 num2 = document.getElementById("no2").value;
 num1 = parseInt(document.getElementById("no2").value);
  num1 = parseInt(document.getElementById("no2").value); 

 switch(op) {
    case 1:
        result = num1 + num2;
        break;
    case 2:             
        result = num1 - num2;
        break;
    case 3:
        result = num1 * num2;
        break;
    case 4:
        result = num1 / num2;
        break;





 document.getElementById("result").innerHTML = result;

 default:
 }

 }
 </script>
 </head>
 <body>
    <h3>*- - - Simple Calculator - --*</h3>
<textarea id = "no1"> </textarea>
<textarea id = "no2"> </textarea>
 <button id="add" onclick="simple_calculator(1);">Add</button>
<button id="sub" onclick="simple_calculator(2);"> Subsract</button>
 <button id="mul" onclick="simple_calculator(3);">Multiply</button>
 <button id="div" onclick="simple_calculator(4);">Divide</button>

<p id="result"></p>

 </body>
 </html>

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Ваш simple_calculator должен возвращать функцию, если вы вызываете ее сразу после назначения в качестве обработчика события:

function simple_calculator(op){
  return function wrap() {
    var numl=0;
    var num2=0;
    var result=0;
    num1 = document.getElementById("no1").value;
    num2 = document.getElementById("no2").value;
    num1 = parseInt(document.getElementById("no2").value);
    num1 = parseInt(document.getElementById("no2").value);

    switch(op) {
      case 1:
        result = num1 + num2;
        break;
      case 2:
        result = num1 - num2;
        break;
      case 3:
        result = num1 * num2;
        break;
      case 4:
        result = num1 / num2;
        break;
      default:
    }
    document.getElementById("result").innerHTML = result;
  }
}
0 голосов
/ 11 октября 2018

Вам нужно использовать onclick="simple_calculator(this.id)", где это идентификатор элемента, и вы используете идентификатор для коммутатора

function simple_calculator(id) {
 
  var num1 = 0;
  var num2 = 0;
  var result = 0;

  num1 = parseInt(no1.value) || 0;
  num2 = parseInt(no2.value) || 0;
  
 
    switch (id) {
      case "add":
        result = num1 + num2;
        break;
      case "sub":
        result = num1 - num2;
        break;
      case "mul":
        result = num1 * num2;
        break;
      case "div":
        result = num1 / num2;
        break;
    }
    document.getElementById("result").innerHTML = result;
  }
<h3>*- - - Simple Calculator - --*</h3>
<textarea id = "no1" > </textarea>
<textarea id = "no2"> </textarea>
 <button id="add" onclick="simple_calculator(this.id)">Add</button>
 <button id="sub" onclick="simple_calculator(this.id)">Subsract</button>
 <button id="mul" onclick="simple_calculator(this.id)">Multiply</button>
 <button id="div" onclick="simple_calculator(this.id)">Divide</button>

<p id="result"></p>
0 голосов
/ 11 октября 2018

Вам нужно передать значение из вызова функции-обработчика onclick в функцию simple_calculator, поэтому попробуйте это:

function simple_calculator(op) { // op should be an argument

} 
...