1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

クリックイベントで<label> と チェックボックス、テキストを動的に生成する【JavaScript】

Last updated at Posted at 2020-08-23

#今回、実装したかったのはコチラ
実装デモ
:point_up::point_up::point_up:

  • 当初、<input type= checkbox><label>テキスト</label>が別々に生成され、紐付けもされず苦労した。

  • そこでまず、 <label><input>を追加

  • 次に<input><textnode>を追加

  • 出来上がった<label><li>に追加するという手順を踏んで実装。


#【HTML】


<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>To do リスト</title>
    <link rel="stylesheet" href="css/style.css">
  </head>
  <body>
    <div class="To-do-list">
      <h1>To do リスト</h1>
      <h2 id="today"></h2>
      <input type="text">
      <button>追加</button>
      <button id="done">完了</button>
      <ul>
        <!-- <li><label><input type="checkbox">買い物</label></li>
        <li><label><input type="checkbox">読書</label></li>
        <li><label><input type="checkbox">犬の散歩</label></li> -->
      </ul>
    </div>
    <script src ="js/main.js"></script>
  </body>
</html>

#【CSS】


body {
  background: #a1d8e2;
}

h1 {
  font-size: 20px;
}

h2 {
  font-size: 15px;
}

.To-do-list {
  width: 500px;
  margin: 20px ;
}

ul {
  margin-top: 30px;
  padding: 0;
}

li {
  list-style: none;
  user-select: none;
}

input[type='checkbox'] {
  margin-right: 15px;
}

#【JavaScript】

'use strict';

{
 //------------------------------今日の日付を取得-------------------------------------//

  let date = new Date();
  let month = date.getMonth() + 1;
  let year = date.getFullYear();
  let day = date.getDate();

  document.getElementById("today").textContent = `${year}${month}${day}日`;
//-----------------------------------End-----------------------------------------//

  //====================== クリックイベント 追加=================================//
  document.querySelector('button').addEventListener('click', () => {
    const li = document.createElement('li');
    const text = document.querySelector('input'); //html内のinput を選択
    const label = document.createElement('label');
    const input = document.createElement('input');//新たにinputを生成
    input.type = 'checkbox';

    const ul = document.querySelector('ul');
    li.appendChild(label);
    label.appendChild(input);
    label.appendChild(document.createTextNode(`${text.value}`));
    ul.appendChild(li);//labelにinputを追加した後、textnodeを追加。
                       //その出来上がったlabelをliに追加してulに追加するということを実行
    text.value = '';
    text.focus();
  });
//======================================End==========================================//

//||||||||||||||||||||||||| クリックイベント 削除|||||||||||||||||||||||||||||||||||||||||||//

  document.getElementById('done').addEventListener('click', () => {
    const fineshed = document.querySelectorAll('li')[0];
                                          //完了ボタンをクリックしたら、一番上のliが削除される
    fineshed.remove();
  });
}
//||||||||||||||||||||||||||||||||||End||||||||||||||||||||||||||||||||||||||||||||||//

1
0
0

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?