Jaydeep
Jaydeep

Reputation: 17

trying to build a simple calculator with react and javascript here is addition function

import { Form, InputGroup, Button } from "react-bootstrap";

export default function About() {

---------------------> i want this function to perform addition but it is shown NaN even though i parseInt...........

**function add() {
    let n1 = parseInt(document.getElementById("num1").value);
    let n2 = parseInt(document.getElementById("num2").value);
    document.getElementById("result").innerHTML = n1 + n2;
}**

return (
    <> <h2>addition function</h2>
        <div className="row">
            <div className="col-6">
                <InputGroup className="mb-3" id="num1">
                    <Form.Control
                        placeholder="number1" />
                </InputGroup>
            </div>
            <div className="col-6">

                <InputGroup className="mb-3" id="num2">
                    <Form.Control
                        placeholder="number2"
                    />
                </InputGroup>
            </div>
            <div className="col-6">

                <InputGroup className="mb-3" id="res">
                    <Form.Control
                        placeholder="answer"
                    />
                </InputGroup>
            </div>
            <Button variant="dark" onClick={add} >Add</Button>
        </div>
    </>
);

}

Upvotes: 1

Views: 479

Answers (1)

DecPK
DecPK

Reputation: 25408

You can introduce three state for numberOne, numberTwo and for total using useState hook as:

  const [numberOne, setNumberOne] = useState(0);
  const [numberTwo, setNumberTwo] = useState(0);
  const [total, setTotal] = useState(0);

CODESANDBOX LINK

on click of button Add you just have to set total as value to setTotal as:

  function add() {
    setTotal(numberOne + numberTwo);
  }

You can change input as of type number so tha user can only input of type number

<Form.Control
              type="number"
              placeholder="number1"
              value={numberOne}
              onChange={(e) => setNumberOne(+e.target.value)}
            />

FULL CODE

function About() {
  const [numberOne, setNumberOne] = useState(0);
  const [numberTwo, setNumberTwo] = useState(0);
  const [total, setTotal] = useState(0);
  function add() {
    setTotal(numberOne + numberTwo);
  }

  return (
    <>
      <h2>addition function</h2>
      <div className="row">
        <div className="col-6">
          <InputGroup className="mb-3" id="num1">
            <Form.Control
              type="number"
              placeholder="number1"
              value={numberOne}
              onChange={(e) => setNumberOne(+e.target.value)}
            />
          </InputGroup>
        </div>
        <div className="col-6">
          <InputGroup className="mb-3" id="num2">
            <Form.Control
              type="number"
              placeholder="number2"
              value={numberTwo}
              onChange={(e) => setNumberTwo(+e.target.value)}
            />
          </InputGroup>
        </div>
        <div className="col-6">
          <InputGroup className="mb-3" id="res">
            <Form.Control placeholder="answer" value={total} />
          </InputGroup>
        </div>
        <Button variant="dark" onClick={add}>
          Add
        </Button>
      </div>
    </>
  );
}

export default function App() {
  return (
    <div className="App">
      <About />
    </div>
  );
}

Upvotes: 1

Related Questions