2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

入力フォームで数値を入力する際はparseIntを使用する(JavaScript, React)

Last updated at Posted at 2024-10-26

状況

  • JavaScriptで入力フォームから数値を入力する
  • 入力フォームから受け取った数値を合計する

※コメントでご指摘を頂き、parseIntだと文字列によって誤った値を返す恐れがあるので、Number()や単項プラスを使う方が良いとのことです。

parseIntだと整数専用なので、Number()や単項プラスを使用して文字列全体を数値として扱ったほうが誤った変換を防ぐことが出来ます。

parseIntを使わない場合の問題点

  • 入力フォームで数値を入力して送信した場合、JavaScriptが動的にstring(文字列)型に変換してしまう
  • 入力した数値がstring型だと何が良くないのか?
    • string型のまま数値を合計しようとすると文字列の連結を起こしてしまう
:string型での足し算
const str1 = "1";
const str2 = "2";

console.log(str1 + str2);

12

parseIntの使い方

    parseInt('5', 10)
    >> 5
    // 文字列から数値に変換されている
  • parseIntの第一引数に数値に変換したい文字列、第二引数に基数を入力する
    • 基数を10にした場合、10進数で変換される
<input
          type="number"
          value={time}
          min="0"
          onChange={(e) => setTime(parseInt(e.target.value, 10))}
/>
  • Reactの入力フォームでparseIntを使用する例
    • onChange属性で入力フォームのイベントが発火されたときに、文字列ではなく数値としてuseStateにセットする

まとめ

JavaScriptで入力フォームから数値を送信する際は、そのままでは文字列に変換されるのでparseIntを使用し数値に変換する

2
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?