3
1

inputタグに入力した値が消去リセットできない

Posted at

はじめに

今回はJavascriptを用いてToDoアプリの作成に取り組みました。
仕様としては、inputタグにToDoを入力して「追加ボタン」をクリックすると、inputタグに入力したテキストはリセットされて、未完了のToDoに項目が追加されるといった仕様です。
ですがinputタグに入力したテキストがリセットされずに残ってしまう、といったエラーに直面しました。
ここでは実際のコードと、解決方法を記載します!

問題

<input id="add-text" placeholder="TODOを入力">
    <button id="add-button">追加</button>
const addButton = document.querySelector("#add-button");

const onClickAdd = () =>{
  //テキストの追加と消去
  const inputText = document.querySelector("#add-text").value;
  inputText = "";

上記のコードでhtmlの「追加ボタン」をクリックするとinputのvalueが空のテキスト("")に書き換わり、リセットされるという動きを想定していました。
しかしボタンをクリックしてもinputタグのvalueはリセットされませんでした。

解決策

const addButton = document.querySelector("#add-button");

const onClickAdd = () =>{
  //テキストの追加と消去
  const inputText = document.querySelector("#add-text");
  inputText.value = "";

こちらのコードで解決しました。
変更した点は
const inputText = document.querySelector("#add-text").value;こちらのコードを
const inputText = document.querySelector("#add-text");こちらに変更。

inputText = "";こちらのコードを
inputText.value = "";こちらに変更しました。

変更前だとDOMを取得したのではなく、inputタグに入力されたテキストを取得しただけ。
ex)入力した値が「テスト」だとするとinputText = "テスト";になっている。
その後にinputText = ""としても「テスト」という言葉が「」空も文字になるだけで、inputのvalueは変わらない。

変更後はDOMをまず取得してinputText.value = "";のコードで取得したDOMのvalueにアクセスしている。

まとめ

説明が難しかったのですが、constで要素を取得する時には、DOM操作のみで留めておこうと思いました。

3
1
1

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
3
1