日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

19、任务十八——事件委托、数组处理

發布時間:2024/4/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 19、任务十八——事件委托、数组处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0、題目

  • 如圖,模擬一個隊列,隊列的每個元素是一個數字,初始隊列為空
  • 有一個input輸入框,以及4個操作按鈕
    • 點擊"左側入",將input中輸入的數字從左側插入隊列中;
    • 點擊"右側入",將input中輸入的數字從右側插入隊列中;
    • 點擊"左側出",讀取并刪除隊列左側第一個元素,并彈窗顯示元素中數值;
    • 點擊"右側出",讀取并刪除隊列又側第一個元素,并彈窗顯示元素中數值;
  • 點擊隊列中任何一個元素,則該元素會被從隊列中刪除

1、解題過程

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>task18</title> 6 <style> 7 #button{ 8 display:inline-block; 9 } 10 ul{ 11 list-style: none; 12 } 13 li{ 14 background-color: red; 15 display:inline-block; 16 width:20px; 17 padding:10px; 18 margin-left:3px; 19 color:white; 20 } 21 </style> 22 </head> 23 <body> 25 <input id="input" type="text"> 26 <div id="button"> 27 <button id="leftin">左側入</button> 28 <button id="rightin">右側入</button> 29 <button id="leftout">左側出</button> 30 <button id="rightout">右側出</button> 31 </div> 32 <ul id="result"> 33 </ul> 34 <script> 37 var $=function(id){ 38 return document.getElementById(id); 39 } 40 var number=[]; 41 //給按鈕的父元素添加事件委托,避免給每個按鈕添加點擊事件 42 $("button").addEventListener("click",function(e){ 43 var target=e.target, 44 value=$("input").value; 45 switch(target.id){ 46 case "leftin":{ 47 if(!/^\d+$/.test(value))alert("請輸入有效的數字"); 48 else{ 49 number.unshift(value); 50 show(); 51 } 52 break; 53 } 54 case "rightin":{ 55 if(!/^\d+$/.test(value)) alert("請輸入有效的數字"); 56 else{ 57 number.push(value); 58 show(); 59 } 60 break; 61 } 62 case "leftout":{ 63 alert(number.shift(number[number.length-1])); 64 show(); 65 break; 66 } 67 case "rightout":{ 68 alert(number.pop(number[0])); 69 show(); 70 break; 71 } 72 } 73 }) 74 //給輸出的結果添加事件委托,使點擊的元素被刪除 75 $("result").addEventListener("click",function(e){ 76 var target=e.target; 77 if(target.nodeName!="LI") return; 78 var tar=parseInt(target.getAttribute("id")); //得到被點擊元素的id屬性,之前id綁定的是該元素在數組中的序號 79 number.splice(tar,1);   //刪除數組number中的元素,1代表只刪除一個元素 80 show(); 81 return number; 82 }) 83 //將得到的用戶輸入數據輸出顯示到id為result的列表中 84 function show(){ 85 var content=" "; 86 for(var i=0;i<number.length;i++){ 87 content+="<li id='"+i+"'>"+number[i]+"</li>"; 88 } 89 result.innerHTML=content; 90 } 91 </script> 92 </body> 93 </html>

2、遇到的問題

(1)對輸入的數據進行驗證

  題目要求輸入的數據是數字,所以用isNaN( )函數對輸入的數據進行驗證,后來發現沒有輸入數據以及輸入空格時,返回值都是false,原來isNaN()是把空串或空格作0處理的,所以返回值是false。因此用正則表達式驗證數據是否為數字。

(2)點擊的元素被刪除

  給輸出的結果添加事件委托,驗證被點擊元素是否是<li>元素,如果是,就獲取被點擊元素的id屬性,之前每個<li>元素的id屬性已經綁定了該元素在數組中的序號,所以直接在數組中刪除這一元素,再重繪柱狀圖即可。

?

?

轉載于:https://www.cnblogs.com/cjlalala/p/5820745.html

總結

以上是生活随笔為你收集整理的19、任务十八——事件委托、数组处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。