JS はシンプルな todoList (メモ帳) 効果を実装します

JS はシンプルな todoList (メモ帳) 効果を実装します

メモ帳プログラムは、HTML + CSS + JavaScript の 3 つの主要なフロントエンド フレームワークを使用して実装されています。

メモ帳にToDo 項目追加、完了、削除する基本機能を実装しました。

以下はプログラムの完全なコードです。

1. 効果表示を実現する

2. HTMLコード

<ヘッド>
  <メタ文字セット="UTF-8">
  <title>ToDoリスト</title>
//CSS ファイルをインポート <link rel="stylesheet" href="todoList.css" >
</head>
<本文>
<div class="myhead">
   <h2>私のToDoリスト</h2>
  <テーブル>
    <tr>
      <td><input type="text" placeholder="ToDo 項目を入力してください..." id="things"></td>
      <td> <span id="add" onclick="addElement()">追加</span></td>
    </tr>
  </テーブル>
</div>
 
//ToDo リスト セクション、コンテンツは動的に生成されます<ul></ul>
 
<div class="test2"></div>
</本文>
<!-- JavaScript 要素を最後に置いてください。そうしないと、JavaScript の実行時に DOM ツリーがまだ構築されていないため、予期しないエラーが発生します -->
<script src="todoList.js" type="text/javascript"></script>
</html>

3. CSSコード

@フォントフェイス {
  font-family: 'iconfont'; /* プロジェクト ID 2680005 */
  ソース: url('//at.alicdn.com/t/font_2680005_2v81j5og00f.woff2?t=1626424842361') フォーマット('woff2'),
  url('//at.alicdn.com/t/font_2680005_2v81j5og00f.woff?t=1626424842361') フォーマット('woff'),
  url('//at.alicdn.com/t/font_2680005_2v81j5og00f.ttf?t=1626424842361') フォーマット('truetype');
}
 
体 {
  マージン: 0;
  パディング: 0;
}
*{
  ボックスのサイズ: 境界線ボックス;
}
.私の頭{
   背景色: ライトピンク;
   テキスト配置: 中央;
   パディング: 5px 0px 10px 0px;
   色: アリスブルー;
 }
  テーブル{
  マージン: 0 自動;
}
 #もの{
   幅: 180ピクセル;
   高さ: 30px;
   境界線の半径: 3px;
   アウトライン: なし;
   境界線: 実線 1px 白;
 }
 #追加{
   表示: インラインブロック;
   幅: 80ピクセル;
   高さ: 30px;
   背景色: ゲインズボロ;
   色: グレー;
   境界線の半径: 3px;
   行の高さ: 30px;
 }
  #追加:ホバー{
    カーソル: ポインタ;
    背景色: ダークグレー;
    色: グレー;
  }
ul{
  マージン: 0px;
  パディング: 0px;
}
  ul li{
    リストスタイル: なし;
    /*テキスト配置: 中央;*/
    位置: 相対的;
    パディング左:40px;
    高さ: 40px;
    行の高さ: 40px;
  }
  ul li:n番目の子(奇数) {
  背景色: #f9f9f9;
}
  ul li:hover{
  カーソル: ポインタ;
  背景色: #dddddd;
}
 
  ul li.check{
  背景色: #888888;
  テキスト装飾: 取り消し線;
  色: #f9f9f9;
}
  ul li.check::before{
 
    コンテンツ: '';
    位置: 絶対;
    境界線の色: #fff;
    境界線のスタイル: solid;
    境界線の幅: 0 2px 2px 0;
    上: 10px;
    左: 16px;
 
    変換: 回転(45度);
    高さ: 15px;
    幅: 7px;
}
。近い{
  位置: 絶対;
  右: 0px;
  上: 0px;
  パディング: 0px 20px;
  フォントサイズ: 16px;
}
.close:hover{
  背景色: #f44336;
  色: 白;
}

4. JavaScriptコード

//1. 各スパンの後に閉じるノードを追加します var myNodelist = document.getElementsByTagName ("li")
 
(var i=0;i<myNodelist.length;i++) の場合
{
  var span = document.createElement("span");
 
  var txt = document.createTextNode("\u00D7");
 
  span.className="閉じる";
  span.appendChild(txt);
  myNodelist[i].appendChild(span);
 
}
 
//2. 削除イベントを処理する var close = document.getElementsByClassName("close")
(var i=0;i<close.length;i++) の場合
{
  close[i].onclick=関数() {
    //parentElement は現在のノードの親要素ノードを返すことを意味します var div = this.parentElement
    div.style.display="なし"
  }
}
 
//3. タスク完了イベントの処理 var list = document.querySelector ("ul")
console.log(リスト)
list.addEventListener('click',関数(ev) {
//event.target 属性はイベント委譲を実装するために使用できます。たとえば、イベントを ul にバインドしますが、li がクリックされたときにトリガーできます //tagName は要素のタグ名です if (ev.target.tagName === 'LI')
{
  // トグルメソッドは選択された要素のhide()とshow()を切り替えます //classListは要素のクラスに対して引き続き動作します ev.target.classList.toggle('check')
}
}、間違い);
 
//4. プロセスクリックの追加ボタンをクリックし、ToDo 項目をリストに追加する function addElement(){
  var things = document.getElementById('things').value
 
 // アラート(localStorage.setItem("mutodolist",JSON.stringify(things)))
 
  var li = document.createElement('li')
 
  var t = document.createTextNode(もの)
 
  if (もの == '')
  {
    alert("保留中のイベントを入力してください")
  }
  それ以外
  {
    リストに追加子(li)
    li.appendChild(t)
  }
 
  var span = document.createElement('span')
  var txt = document.createTextNode('\u00D7')
 
  span.className='閉じる'
  span.appendChild(txt)
  li.appendChild(スパン)
 
  (var i=0;i<close.length;i++) の場合
  {
    close[i].onclick=関数() {
      var div = this.parentElement
      div.style.display="なし"
    }
  }
}

プログラムを実装しているときに、いくつかのコードの意味は理解できたのですが、自分で書き始めると、どうやって完成させるのかが思いつきませんでした。

結局のところ、私は十分にコーディングを練習しておらず、学んだことから推論を導き出して自分の考えに統合することができていないのだと思います。

そのため、この記事を読んでメモ帳効果を作りたいと思ったら、実際に自分で入力してみることをお勧めします。結局、自分でコードを入力してみることでのみ、どこに欠陥やエラーがあるかを知ることができます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • フロントエンド HTML+CSS+JS を使用してシンプルな TODOLIST 関数を開発する (メモ帳)
  • todolist 機能を実装するためのネイティブ JavaScript
  • Vue.js todolist 実装コード
  • JavaScript の例 ODO リスト分析

<<:  MySQL のインデックス障害の一般的なシナリオと回避方法

>>:  GZIP 圧縮 Tomcat と Web パフォーマンスの改善プロセス図

推薦する

CSSはletter-spacingプロパティを通じて単語間の間隔を制御します。

letter-spacing プロパティ: 文字間のスペース (文字間隔) を増減します。このプロ...

MySQL 5.7 でルートパスワードを変更する方法

MySQL 5.7 以降では、多くのセキュリティ更新が追加されました。旧バージョンのユーザーは慣れて...

CSS 背景画像を設定するための 6 つの興味深いヒント

background-image は、おそらくすべてのフロントエンド開発者がキャリアの中で少なくとも...

mysql bin-log ログファイルを sql ファイルに変換する方法

mysqlbinlogのバージョンを表示mysqlbinlog -V [--version] bin...

Nginx でアクセス頻度、ダウンロード速度、同時接続数を制限する方法

1. アクセス頻度、同時接続、ダウンロード速度を制限するために使用されるモジュールと命令の概要ngx...

画像をハイパーリンクとして使用したときに表示される青いボックスを削除する方法

最近、Dreamweaver を使用して製品プレゼンテーションを作成し、画像にハイパーリンクを追加し...

ウェブページをデザインするには?ウェブページを作成するには?

Web デザインの理解に関しては、多くの人がまだ Web ページ制作のレベルにとどまっているようで...

Linux で NFS ファイル共有サーバーを構築するための詳細な手順

Linux が NFS サーバーを構築異なるオペレーティング システム間でデータを共有するために、通...

node.js が大規模プロジェクトに適さない理由

目次序文1. アプリケーションコンポーネント2. アプリケーションの種類3. アプリケーションサービ...

Nodeイベントループの包括的な理解

目次ノードイベントループイベントループ図メインスレッドイベントループタイマーキューの仕組み投票キュー...

ページのレンダリング時間を短縮してページの実行速度を速めます

ブラウザでのページのレンダリング時間をできるだけ短縮するにはどうすればよいでしょうか? この記事は、...

React コンポーネント通信ルーティングパラメータ転送 (react-router-dom)

目次最近Reactを勉強していて、今は仕事でVueを使っています。学習の過程で、両者を比較して理解を...

LinuxにPHP7をインストールする方法の詳細な説明

Linux に PHP7 をインストールするにはどうすればいいですか? 1. 依存パッケージをインス...

Dockerコンテナ内でホストDocker操作を呼び出して実行する

まず、この投稿は Docker 初心者向けです。もちろん、ベテランであれば記事中の分割線以降の操作方...

Docker 大規模プロジェクトのコンテナ化変革

仮想化とコンテナ化は、クラウドベースのプロジェクトでは避けられない 2 つの問題です。仮想化は純粋な...