一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - js實現簡單商品篩選功能

js實現簡單商品篩選功能

2022-01-12 16:54~噓~禁止想象~ js教程

這篇文章主要為大家詳細介紹了js實現商品篩選功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了js實現商品篩選功能的具體代碼,供大家參考,具體內容如下

應用場景:商品篩選

js實現簡單商品篩選功能

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<!DOCTYPE html>
<html lang="en">
 
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <style type="text/css">
 * {
 margin: 0;
 padding: 0;
 list-style: none;
 text-decoration: none;
 }
 
 .choose {
 width: 500px;
 height: auto;
 margin: auto;
 }
 
 .choose nav {
 height: 50px;
 background-color: red;
 }
 
 .choose nav span {
 margin: 0 5px;
 }
 
 .choose .show {
 color: red;
 }
 
 .choose ul li {
 border: 1px solid black;
 }
 
 .choose ul li a {
 box-sizing: border-box;
 display: inline-block;
 width: 40px;
 border-left: 1px solid black;
 margin: 5px;
 padding-left: 5px;
 }
 </style>
</head>
 
<body>
 <div class="choose">
 <nav></nav>
 <ul>
 <li>
 <strong>手機:</strong>
 <a href="javascript:;">小米</a>
 <a href="javascript:;">華為</a>
 <a href="javascript:;">apple</a>
 <a href="javascript:;">OPPO</a>
 <a href="javascript:;">vivo</a>
 </li>
 <li>
 <strong>價格:</strong>
 <a href="javascript:;">3200</a>
 <a href="javascript:;">2600</a>
 <a href="javascript:;">899</a>
 <a href="javascript:;">2799</a>
 <a href="javascript:;">2299</a>
 </li>
 <li>
 <strong>屏幕:</strong>
 <a href="javascript:;">399</a>
 <a href="javascript:;">600</a>
 <a href="javascript:;">800</a>
 <a href="javascript:;">1200</a>
 </li>
 </ul>
 </div>
</body>
 
</html>
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script type="text/javascript">
 var li = document.querySelectorAll('li');
 var stack = []; //存放三個類別的option
 
 for (var i = 0; i < li.length; i++) {
 // 獲取每個li中的option進行處理
 var options = li[i].querySelectorAll("a");
 for (var j = 0; j < options.length; j++) {
 // 當選項被點擊時,傳入點擊的類別是第幾個li的
 // options[j].onclick = Aclick.bind(options[j], [i]); //1. 將點擊事件分離出去
 options[j].onclick = Bclick(i); //2. 將點擊事件分離出去
 }
 }
</script>

當寫到這里的時候想要把這個事件函數分離出去,但是有參數。于是問題出現

如何將一個帶參數的事件函數分離出去???

于是乎:就有了以下兩種方法

1、使用bind改變this指向后返回一個不執行的函數

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function Aclick(index) {
// 刪掉nav
var choose = document.querySelector('.choose');
var nav = document.querySelector(".choose nav");
 choose.removeChild(nav);
 
 // 使用stack重新添加
 stack[index] = this.innerHTML;
 var nav = document.createElement("nav");
 for (k = 0; k < stack.length; k++) {
 if (stack[k] != "" && stack[k] != undefined) { //略過stack中的空項,重新向nav中添加span
  var span = document.createElement("span");
  var a = document.createElement("a");
  a.innerHTML = "X";
  a.href = "javascript:void(0);";
  span.innerHTML = stack[k];
  a.onclick = function() {
  stack[index] = "";
  nav.removeChild(this.parentNode);
  }
  span.appendChild(a);
  nav.appendChild(span);
 }
 }
 choose.insertBefore(nav, choose.children[0]);
}

2、在注冊函數外面套一層函數將注冊函數返回

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function Bclick(index) {
 return function() {
 // 刪掉nav
 var choose = document.querySelector('.choose');
 var nav = document.querySelector(".choose nav");
 choose.removeChild(nav);
 
 // 使用stack重新添加
 stack[index] = this.innerHTML;
 var nav = document.createElement("nav");
 for (k = 0; k < stack.length; k++) {
  if (stack[k] != "" && stack[k] != undefined) { //略過stack中的空項,重新向nav中添加span
  var span = document.createElement("span");
  var a = document.createElement("a");
  a.innerHTML = "X";
  a.href = "javascript:void(0);";
  span.innerHTML = stack[k];
  a.onclick = function() {
  stack[index] = "";
  nav.removeChild(this.parentNode);
  }
  span.appendChild(a);
  nav.appendChild(span);
  }
 }
 choose.insertBefore(nav, choose.children[0]);
 }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/weixin_45773503/article/details/113444599

延伸 · 閱讀

精彩推薦
  • js教程微信小程序實現購物車小功能

    微信小程序實現購物車小功能

    這篇文章主要為大家詳細介紹了微信小程序實現購物車小功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    小王同學Max5462021-12-22
  • js教程詳解微信小程序「渲染層網絡層錯誤」的解決方法

    詳解微信小程序「渲染層網絡層錯誤」的解決方法

    這篇文章主要介紹了詳解微信小程序「渲染層網絡層錯誤」的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價...

    石璞東 | haha6272021-12-27
  • js教程js+for循環實現字符串自動轉義的代碼(把后面的字符替換前面的字符)

    js+for循環實現字符串自動轉義的代碼(把后面的字符替換前面的字

    這段代碼是從網上看到的一段不錯的代碼,用for命令實現字符串的轉移,而且使用的是for循環直接將后面的字符替換成前面的字符,這個邏輯以前沒試過...

    js教程網4022021-12-18
  • js教程繪制微信小程序驗證碼功能的實例代碼

    繪制微信小程序驗證碼功能的實例代碼

    這篇文章主要介紹了繪制微信小程序驗證碼功能的實例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參...

    WALL*E8802021-12-27
  • js教程利用JS判斷元素是否為數組的方法示例

    利用JS判斷元素是否為數組的方法示例

    這篇文章主要給大家介紹了關于利用JS判斷元素是否為數組的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價...

    Fahrenheitzz10062021-12-29
  • js教程選擇 JavaScript 測試框架的標準

    選擇 JavaScript 測試框架的標準

    由于 JavaScript 被廣泛認為是“web語言”,因此該語言的測試自動化框架是最豐富和最受歡迎的也就不足為奇了。通過考慮不同框架的屬性,你將更加清楚哪...

    粵嵌教育6732022-01-07
  • js教程使用Typescript開發微信小程序的步驟詳解

    使用Typescript開發微信小程序的步驟詳解

    這篇文章主要介紹了使用Typescript開發微信小程序的步驟詳解,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考...

    陳希章6702021-12-30
  • js教程js實現隨機點名

    js實現隨機點名

    這篇文章主要為大家詳細介紹了js實現隨機點名,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    搬磚大法10082022-01-04
主站蜘蛛池模板: 美女福利网站 | 高h喷水荡肉爽文np肉色文 | 草莓影音 | 2021海角社区最新版 | 色天天色综合 | 日产免费自线一二区 | 91噜噜噜噜色| 四虎免费永久观看 | 图片一区 | 97色蜜桃| 国产亚洲欧美日韩综合综合二区 | 日本不卡不码高清免费观看 | 成人先锋 | 四虎在线成人免费网站 | 国产精品亚洲片在线观看麻豆 | 国产精品久久毛片蜜月 | 日本又黄又裸一级大黄裸片 | 欧美日韩视频在线第一区二区三区 | 久久精品AV一区二区无码 | 下雨天小说词枝 | 99久久免费视频 | 国产一区日韩二区欧美三区 | 国产精品露脸国语对白99 | 欧美一区二区三区在线观看免费 | 青青五月天 | 国产精品午夜国产小视频 | 草逼视频免费看 | 亚洲高清中文字幕 | 骚虎网站在线观看 | 日本三级做a全过程在线观看 | 欧美色fx性乌克兰 | 欧美作爱福利免费观看视频 | 午夜精品国产自在现线拍 | 极品91| 九九精品视频在线免费观看 | 青柠影院在线观看免费完整版1 | 国色天香社区在线视频播放 | 日本b站一卡二不卡三卡四卡 | free性泰国娇小videos | 久久精品18 | 免费xxxx日本大片在线观看 |