ホームページ ウェブフロントエンド jsチュートリアル タブクリック切り替えのJavaScript実装コード共有例(画像とテキスト)

タブクリック切り替えのJavaScript実装コード共有例(画像とテキスト)

Mar 27, 2017 pm 02:26 PM

タブ切り替え効果は、クリック切り替え、スライド切り替え、遅延切り替え、自動切り替え、その他の効果を含めて、今日の Web ページで広く使用されています。このブログ投稿では、タブ クリック切り替えの効果を実現するためにネイティブ JavaScript を使用します。

タブ切り替え効果は、クリック切り替え、スライド切り替え、遅延切り替え、自動切り替え、その他の効果を含めて、今日の Web ページで広く使用されています。このブログ投稿では、タブ クリック切り替えの効果を実現するためにネイティブ Javascript を使用しています

1。 . 関数実装

html パートhtml 部分

<button style="background-color:#f60; color: #fff;">按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<p style="display:block;">第一个Nian糕</p>
<p>第二个Nian糕</p>
<p>第三个Nian糕</p>
ログイン後にコピー

css 部分

p {
 display: none;
 width: 155px;
 height: 100px;
 border: 1px solid #000;
}
ログイン後にコピー

接下来是 JS 部分,根据每一步要实现的功能,进而转换成代码,每当我们要实现一个效果的时候,先不要急着去敲代码,而是先思考要怎么去实现,结构是什么样的,某个功能需要用到什么事件等等,自己在脑海里把整个流程过一遍,再去把每一步的逻辑转换成代码

a. 获取元素

var btnList = document.getElementsByTagName("button");
var pList = document.getElementsByTagName("p");
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

注释: document.getElementsByTagName 返回的是一个[类数组对象],可以使用数组的方法对其进行处理,但类数组对象并不具有数组所具有的方法

b. 给元素绑定点击事件

//第一个按钮的点击事件
btnList[0].onclick = function () {
 btnList[0].style.color = "#fff";
 btnList[0].style.backgroundColor = "#f60";
 btnList[1].style.color = "";
 btnList[1].style.backgroundColor = "";
 btnList[2].style.color = "";
 btnList[2].style.backgroundColor = "";
 pList[0].style.display = "block";    
 pList[1].style.display = "none";    
 pList[2].style.display = "none";    
}
ログイン後にコピー
//第二个按钮的点击事件
btnList[1].onclick = function () {
 btnList[0].style.color = "";
 btnList[0].style.backgroundColor = "";
 btnList[1].style.color = "#fff";
 btnList[1].style.backgroundColor = "#f60";
 btnList[2].style.color = "";
 btnList[2].style.backgroundColor = "";  
 pList[0].style.display = "none";    
 pList[1].style.display = "block";    
}
ログイン後にコピー
//第三个按钮的点击事件
btnList[2].onclick = function () {
 btnList[0].style.color = "";
 btnList[0].style.backgroundColor = "";
 btnList[1].style.color = "";
 btnList[1].style.backgroundColor = "";
 btnList[2].style.color = "#fff";
 btnList[2].style.backgroundColor = "#f60";
 pList[0].style.display = "none";    
 pList[1].style.display = "none";    
 pList[2].style.display = "block";  
}
ログイン後にコピー

现在我们已经实现了一个 Tab 切换的效果了,来看一下效果


虽然很简陋,但已经达到我们想要的效果了,读者可根据自己想要的样式来设置 CSS,接下来我们要做的就是,对 JS 代码进行优化

2. 优化

a. 获取元素

var btnList = document.getElementsByTagName("button");
var pList = document.getElementsByTagName("p");
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

b. 给每一个 button 元素绑定点击事件

for(var i = 0; i < btnList.length; i++ ) {
 btnList[i].index = i; //给每个按钮添加index属性,标记是第几个按钮
 btnList[i].onclick = function() {
  for(var j = 0; j < btnList.length; j++) {
   //将所有的按钮样式去掉,块隐藏
   btnList[j].style.color = "";
   btnList[j].style.backgroundColor = "";
   pList[j].style.display = "none";
  }
  //给点击的按钮添加样式,对应的块显示
  this.style.color = "#fff";
  this.style.backgroundColor = "#f60";
  pList[this.index].style.display = "block";
 }
}
ログイン後にコピー

index 返回字符位置,它是被搜索字符串中第一个成功匹配的开始位置,从零开始

this 是 Javascript 的一个关键字,它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用 this,关于 this 的值,会跟随函数使用场景的不同而发生变化,但是我们只需要记住一个原则就可以了,this 指的是调用函数的那个对象

在这里 this 指向对应的点击按钮,我们可以通过控制台打印来看到 this 所输出的内容


3. Let 命令

ES 6 中新增 let 命令,用来声明变量,其用法类似于 var,但是所声明的变量,只在 let 命令所在的代码块内有效


在上面的代码中,我们在代码块里,分别用 var let 声明了两个变量,接着在代码块内外打印这两个变量,可以看到,var 声明的变量返回了正确的值,代码块内打印 let 声明的变量返回了正确的值,而在代码块外打印 let 声明的变量报错,这表明,let 声明的变量只在它所在的代码块有效


上面代码中,变量 i var 声明的,在全局范围内都有效,所以全局只有一个变量 i,每一次循环,变量 i 的值都会发生改变,而循环内被赋给数组 a function 在运行时,会通过闭包读到这同一个变量 i,导致最后输出的是最后一轮的 i 的值,也就是 10,而如果使用 let

var btnList = document.getElementsByTagName("button");
var pList = document.getElementsByTagName("p");
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

cssパート

for(let i = 0; i < btnLists.length; i++) {
 btnLists[i].onclick = function() {
  for(var j = 0;j < btnLists.length;j++){
   btnLists[j].style.color="";
   btnLists[j].style.backgroundColor="";
   pLists[j].style.display="none";
  }
  this.style.color = "yellow";
  this.style.backgroundColor="#f60";
  pLists[i].style.display="block";
 }
}
ログイン後にコピー
次はJSパートです 各ステップで実装する関数は効果を実現したいときは、急いでコードを入力するのではなく、最初にコードを実装する方法、構造がどのようなものであるか、特定の関数を使用する必要があるかどうかを考えます。 a href="http://www.php.cn/js/js-jspopular-guide-event.html" target="_blank">イベント

などを頭の中で一通り確認し、ロジックを変換します各ステップをコードに追加します

a. 要素を取得します

rrreee🎜注: document.getElementsByTagName は [配列のようなオブジェクト] を返しますが、これは配列メソッドを使用して処理できます。同様のオブジェクトには、配列にあるメソッドがありません🎜🎜🎜b. クリック イベントを要素にバインドします🎜🎜rrreeerrreeerrreee🎜タブ切り替え効果を実装したので、その効果を見てみましょう🎜🎜🎜🎜🎜非常にシンプルですが、望んでいた効果が得られました。さて、読者の皆様次に行う必要があるのは、JS コードの最適化です 🎜🎜🎜🎜 a. 要素 🎜🎜rrreee🎜🎜 を取得します。要素は、クリック イベント🎜🎜rrreee🎜index をバインドして、🎜文字列 🎜 内で最初に一致した最初の一致の開始位置 (ゼロから始まります) 🎜🎜これは Javascript のキーワードです。これは、実行時に自動的に生成される 関数 🎜 を表します。 this は関数内でのみ使用できます。this の値は関数のさまざまな使用シナリオによって異なりますが、覚えておく必要があるのは 1 つの原則だけで十分です。これは関数を呼び出すオブジェクトを指します🎜🎜ここでは、これが次のことを指します。対応するクリックボタンをクリックすると、これによって出力されるコンテンツをコンソール印刷で確認できます🎜🎜🎜🎜🎜🎜3. 変数 🎜 を宣言するための let コマンドを追加しました。その使用法は var ですが、宣言された変数は let でのみ使用されます。 コマンドが配置されているコード ブロック内でのみ有効です🎜🎜🎜🎜🎜 上記のコードでは、var let をそれぞれコード ブロック内に配置し、これら 2 つの変数をコード ブロックの内側と外側に出力します。ご覧のとおり、<code>var で宣言された変数は正しい値を返し、 で宣言された変数は正しい値を返します。 >let はコード ブロック内で出力され、let で宣言された変数は正しい値を返し、let はコード ブロックの外で出力されます。 <code>let で宣言された変数が、それが配置されているコード ブロック内でのみ有効であることを示すエラーが報告されます🎜🎜🎜🎜🎜上記のコードでは、変数 i var によって宣言されており、グローバル スコープで有効であるため、 1 つのグローバル変数 iループ🎜ごとに、変数 i 値が変更され、ループ内の配列 a に割り当てられた 関数 は、クロージャを通じて同じ変数 i を読み取ります。 > の最終出力は、 i の最後のラウンドの値、つまり 10 になります。 let を使用する場合、宣言された変数はその範囲内でのみ有効です。最後に、出力は 6🎜🎜🎜a です。要素 🎜🎜rrreee🎜🎜b を取得します。同様に、i の値もコンソールに出力します。 🎜


ファイルの終わり

執筆過程で間違いや不備が現れることは避けられませんが、より多くの人に誤解を与えないよう修正していただければ幸いです。

以上がタブクリック切り替えのJavaScript実装コード共有例(画像とテキスト)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

CentOS7のTabキーでコマンドが完了できない問題を解決 CentOS7のTabキーでコマンドが完了できない問題を解決 Jan 17, 2024 pm 01:30 PM

今日、centOS で実験をしていたところ、Ubuntu で一般的に使用されていたタブキーによる補完方法が使用できないことがわかり、非常に興味があったので、情報を検索し、自分でテストした結果、考えられる解決策を次のように記録しました。まず、ターミナルで次のコマンドを実行する必要があります: #yuminstallbash-completion//ワイルドカード インストールを使用することもできます: yuminstallbash-c* または、いくつかの初期化パッケージ グループ yum-ygroupinstallBaseCompatibilitylibrariesDebuggingToolsDial-upNetworkingsupppo をインストールすることもできます

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

JavaScriptでinsertBeforeを使用する方法 JavaScriptでinsertBeforeを使用する方法 Nov 24, 2023 am 11:56 AM

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

See all articles