JavaScript排他的思考の具体的な実装

JavaScript排他的思考の具体的な実装

前回のブログで、Xiao Xiong は関連する要素の操作方法を更新しましたが、同じ要素のグループがあり、特定の要素で特定のスタイルを実現したい場合はどうすればよいでしょうか。 ここで循環排除の考え方が役に立ちます。

排他的思考のアルゴリズムは次のとおりです。
他者(自分自身を含む)を排除し、自分自身に対して達成したい効果を設定します。つまり、排他的なアイデアの実装手順は、すべての要素をクリアし、現在の要素を設定することです。

簡単に言えば、次のようになります。

  • すべての要素のスタイルをクリアする(他の要素を削除する)
  • 現在の要素のスタイルを設定します(お任せください)

ここでの順序は逆にすることはできないことに注意してください。
たとえば、ページには 5 つのボタンがあり、ボタンをクリックするとそのボタンの色が変わるという周期的なクリック イベントを実装したいとします。どうすればよいでしょうか。

1. まず5つのボタンを作成しましょう。
以下のように表示されます。

    <button>ボタン 1</button>
    <button>ボタン 2</button>
    <button>ボタン 3</button>
    <button>ボタン 4</button>
    <button>ボタン 5</button>

2. 要素を取得する

<スクリプト>
    //要素を取得します var btn = document.getElementsByTagName('button');
     コンソールにログ出力します。
</スクリプト>

3. 印刷ボタンをループする

for(var i =0; i<btn.length; i++){
	コンソール.log(btn[i]
	}

4. 最初のforループ内の各ボタンにクリック イベントを追加します。まず、内側のループ内のすべてのボタンのスタイルをクリアし、次に外側のループで現在クリックされているボタンにスタイルを追加します。

btn[i].onclick = 関数(){
	(var j =0;j<btn.length;j++){
		btn[j].style.backgroundColor = '';
		}
	this.style.backgroundColor = '青';
}

最終的な効果は次のようになります。

ここに画像の説明を挿入

いくつかの例を見てみましょう。

1. シンプルなタブバー切り替え機能を実装する

コードは次のとおりです。

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <meta http-equiv="X-UA-compatible" content="IE=edge">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <title>ドキュメント</title>
    <!-- 完全なタブ切り替え効果ページを記述します-->
    <スタイル>
        * {
            マージン: 0;
            パディング: 0;
        }
        .box_1 {
            幅: 800ピクセル;
            高さ: 400px;
            背景色:rgb(141, 169, 173);
            マージン: 100px 自動;
        }
        ul {
            位置:絶対;
            上: 64px;
            左:220px;
            高さ: 35px;
            行の高さ: 35px;
            テキスト配置: 中央;
        }
        li {
            幅: 80ピクセル;
            高さ: 35px;
            リストスタイル: なし;
            フロート: 左;
            境界線: 1px 実線 #ccc;
            左マージン: 2px;
            左上の境界線の半径: 6px;
            右上の境界線の半径: 6px ;
        }
        .li1 {
            フォントの太さ: 700;
            色: 黒;
            下部境界線: なし;
            背景色: スカイブルー;
            カーソル: ポインタ;
        }
        。アイテム{
            表示:なし;
        }
    </スタイル>
</head>
<本文>
    <div クラス = 'ボックス'>
        <ul>
            <li class='li1'>タグ 1</li>
            <li>ラベル 2</li>
            <li class = 'li2' style="width:150px">適応幅のラベル</li>
        </ul>
       <div class="box_1">
        <div class="item" style = "display:block">最初のタグの内容</div>
        <div class="item">2 番目のタグの内容</div>
        <div class="item">適応幅ラベルの内容</div>
       </div>
    </div>
    <スクリプト>
        var li = document.querySelectorAll('li');
        コンソールログ(li);
        var item = document.querySelectorAll('.item');
        console.log(アイテム);
        (var i =0;i<li.length;i++){
            li[i].setAttribute('index',i);
            li[i].onclick = 関数(){
                (var j =0;j<item.length;j++){
                    li[j].className = '';
                    コンソールにログ出力します。
                }
                this.className = 'li1';
                var index = this.getAttribute('index');
                コンソールログ(インデックス);
                for(var k = 0; k < item.length; k++) {
                    アイテム[k].style.display='なし';
                }
                アイテム[インデックス].style.display = 'ブロック';
            }
        }
    </スクリプト>
</本文>
</html>

効果は次のとおりです。

ここに画像の説明を挿入

2. チェックボックスオプションがクリックされたときに対応する進行状況バーが増加するように、動的にクリック可能な調査結果表示ページを実装します。

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <meta http-equiv="X-UA-compatible" content="IE=edge">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <title>ドキュメント</title>
    <スタイル>
        。箱{
            幅: 700ピクセル;
            マージン: 10px 自動;
        }
        。バー {
			幅:200px;
			高さ: 15px;
			パディング: 1px;
            背景色: rgb(250, 249, 249);
		}
        .bar_in{
            幅:7%;
            高さ:100%;
			遷移: 幅 0.5 秒;

        }
		.bar_in1 {
			背景色: オレンジ;
		}
        .bar_in2{
            背景色: 黄色;
        }
        .bar_in3{
            背景色: 茶色;
        }
        .bar_in4{
            背景色: チョコレート;
        }
        .bar_in5{
            背景色: 緑;
        }
        .bar_in6{
            背景色: 青;
        }
        .bar_in7{
            背景色: コーンフラワーブルー;
        }
        .bar_in8{
            背景色: ディープピンク;
        }
        .bar_in9{
            背景色: rgb(171, 204, 23);
        }
        .bar_in10{
            背景色: 赤;
        }
        tr{
            幅:800ピクセル;
            高さ: 40px;
           
        }
        td{
            フォントサイズ: 14px;
            幅: 200ピクセル;
            行の高さ: 40px;
            下境界線: 1px 実線 #ccc;
        }
         tr #no1{
            幅: 300ピクセル;
        }
        。ヘッダ{
            フォントサイズ: 16px;
            フォントの太さ: 700;
        }
        .t1 {
            幅: 500ピクセル;
        }
        スパン{
            色:赤;
            フォントサイズ: 14px;
        }
    </スタイル>
</head>
<本文>
    <div class="box">
        <テーブル>
            <tr>
                <td colspan="4" class= 'header'>「最も美しい田舎の女性教師」に感動しましたか? <span>(必須)</span></td>
            </tr>
            <tr>
                <td class='t1'><input type="checkbox" name="" >とても感動しました。彼女はとても美しいです</td>
                <td>
                    <div class="bar">
                    <div class="bar_in bar_in1">
                    </div>
                </div>
                </td>
                <td>0(0%)</td>
            </tr>
            <tr>
                <td class='t1'><input type="checkbox" name="" id="">とても感動しました。彼女はとても美しいです</td>
                <td>
                    <div class="bar">
                    <div class="bar_in bar_in2">
                    </div>
                </div>
                </td>
                <td>335733(96.16%)</td>
            </tr>
            <tr>
                <td class='t1'><input type="checkbox" name="" id="">感情がない、そういうことはたくさんある</td>
                <td>
                    <div class="bar">
                    <div class="bar_in bar_in3">
                    </div>
                </div>
                </td>
                <td>4997(1.43%)</td>
            </tr>
            <tr>
                <td class='t1'><input type="checkbox" name="" id="">感動はしない、多分誇大広告なんだろう</td>
                <td>
                    <div class="bar">
                    <div class="bar_in bar_in4">
                    </div>
                </div>
                </td>
                <td>8398(2.41%)</td>
            </tr>
        </テーブル>
        <テーブル>
            <tr>
                <td colspan="3" class= 'header'>Li Ling と彼女の学校のために、あなたは何をしてあげたいですか? <span>(必須)</span></td>
            </tr>
            <tr>
                <td class="t1"><input type="checkbox" name="" id="" >読書室が持てるように本を寄付してください</td>
                <td>
                    <div class="bar">
                    <div class="bar_in bar_in5">
                    </div>
                </div>
                </td>
                <td>163002(45.89%)</td>
            </tr>
            <tr>
                <td><input type="checkbox" name="" id="">学校を修復できるように寄付してください</td>
                <td>
                    <div class="bar">
                    <div class="bar_in bar_in6">
                    </div>
                </div>
                </td>
                <td>52692(15.09%)</td>
            </tr>
            <tr>
                <td><input type="checkbox" name="" id="">Li Ling の物語を友達に伝えましょう</td>
                <td>
                    <div class="bar">
                    <div class="bar_in bar_in7">
                    </div>
                </div>
                </td>
                <td>118533(33.96%)</td>
            </tr>
            <tr>
                <td><input type="checkbox" name="" id="">何もしない</td>
                <td>
                    <div class="bar">
                    <div class="bar_in bar_in8">
                    </div>
                </div>
                </td>
                <td>14881(4.26%)</td>
            </tr>
            <tr>
                <td><input type="checkbox" name="" id="">何もしない</td>
                <td>
                    <div class="bar">
                    <div class="bar_in bar_in9">
                    </div>
                </div>
                </td>
                <td>0(0%)</td>
            </tr>
            <tr>
                <td><input type="checkbox" name="" id="">何もしない</td>
                <td>
                    <div class="bar">
                    <div class="bar_in bar_in10">
                    </div>
                </div>
                </td>
                <td>0(0%)</td>
            </tr>
        </テーブル>
    </div>
    <スクリプト>
        var 入力 = document.querySelectorAll('入力');
        var barin = document.querySelectorAll('.bar_in');
        var w = [10,98,30,25,50,22,38,30,34,20,20];
        console.log(typeof(5+'%'));
        console.log(barin);
        console.log(入力);
        for(var i =0;i<input.length;i++){
            入力[i].setAttribute('インデックス',i)
            input[i].onclick = 関数(){
                 var インデックス = this.getAttribute('index')
                barin[インデックス].style.width= w[インデックス]+'%';
            }
        }
    </スクリプト>
</本文>
</html>

効果は次のとおりです。

ここに画像の説明を挿入

JavaScript 限定のアイデアの具体的な実装に関するこの記事はこれで終わりです。より関連性の高い JavaScript 限定コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • C# 複数スレッド間の排他ロックの実装
  • Golang は更新時にデータベースの排他ロックを追加するために gorm を使用します
  • MySQLの共有ロックと排他ロックの使用例の分析
  • Javaプログラミングで実装された排他ロックコードの詳細な説明

<<:  両端の CSS レイアウトのサンプルコード (親の負のマージンを使用)

>>:  HTML で選択ドロップダウン ボックスのコンテンツが不完全に表示され、部分的にカバーされる問題の解決策

推薦する

テキストスクロール後の自動停止効果の例

効果は非常にシンプルで、次のコードを自分のページにコピーして実行するだけです。コードをコピーコードは...

JavaScript マウスイベントのケーススタディ

マウスイベントマウスが特定の操作を実行すると、イベント オブジェクトが生成され、イベントがトリガーさ...

HTML TextArea でのフォーマット保存の問題の解決方法

textarea の形式は保存時にデータベースに保存できますが、表示時には /n と相互に変換できな...

シンプルなカルーセル効果を実現するネイティブ js

この記事では、シンプルなカルーセル効果を実現するためのjsの具体的なコードを参考までに紹介します。具...

Docker で Nginx イメージ サーバーを構築する方法

序文一般的な開発では、画像をディレクトリにアップロードし、ディレクトリとファイル名を連結してデータベ...

リモート接続を許可するようにMySQLを変更する方法

MySQLリモート接続の問題に関しては、会社で働いているときに誰かのコンピュータに保存されているMy...

Dockerコンテナの入退出方法の詳細な説明

1 Dockerサービスを開始するまず、docker サービスを開始する方法を知っておく必要がありま...

MySQLの明示的な型変換の簡単な分析

CAST関数前回の記事では、型変換を表示するために使用する CAST 関数について説明しました。暗黙...

Linux での MySQL 5.7.18 バイナリ パッケージのインストール チュートリアル (デフォルトの構成ファイル my_default.cnf なし)

現在、MySQL を学習中です。私は完全な初心者で、Linux についてはあまり知りません。今後の作...

Vueカスタムv-has命令、ボタン権限判定の手順

目次アプリケーションシナリオ簡単に言えば、カスタム指示基本概念グローバルカスタマイズローカルカスタマ...

Linux RabbitMQ クラスタ構築プロセス図

1. 全体的な手順冒頭で、RabbitMQ サービスをインストールして実行する方法を紹介しましたが、...

Linux tac コマンドの実装例

1. コマンドの紹介tac (cat の逆順) コマンドは、ファイルの内容を行単位で逆順に出力します...

ウェブページのドロップダウンリストとdivレイヤーのカバーの問題を選択する

HTML の select 要素に関する質問は、さまざまな場所で提起されています。最近のプロジェクト...

Dockerデーモンのセキュリティ設定項目の詳細な説明

目次1. テスト環境1.1 CentOS 7をインストールする1.2 Docker CE 19.03...