主頁 > 企業開發 > 【原】鍵盤測驗2.0版

【原】鍵盤測驗2.0版

2022-09-03 09:30:43 企業開發

<!--     之前寫了個1.0版本,按鍵布局不美觀,這又在原來的基礎上修改了下,寫了個2.0版本,        代碼思路:這次代碼沒有用keycode碼放在陣列中,而是用key屬性,獲取所按下的鍵的名稱,再通過a標簽的innerHTML屬性,查找所有內容,如果內容相同,就將所對應的標簽背景顏色設定為紅色,用key這種方法來完成,優點是JS代碼量少,但是不足之處是a標簽的內容必須是和key顯示的鍵名完全一樣,否則會認為不是按下的鍵,所以專案中功能鍵的名稱都按key定義的名稱來設定的,用keycode就不會有這種情況,而且如果做104鍵盤(鍵盤有小鍵盤區的),用key就不能解決這種種情,必須用keycode來進行判斷按下的鍵是否是小鍵盤區的,熟優熟劣根據自己喜好來選擇吧,代碼較爛,見諒,主要是和大家分享,讓我們因代碼而改變、成長并獲得成功! -->   效果圖:

 

CSS代碼:

  1         *{
  2             margin: 0;
  3             border: 0;
  4         }
  5 
  6         h1,p{
  7             text-align: center;
  8         }
  9         
 10         div{
 11             margin: 40px auto;
 12             width: 1000px;
 13             height: 490px;
 14         }
 15 
 16         a{
 17             display: block;
 18             height: 50px;
 19             width: 50px;
 20             border: 1px solid red;
 21             float: left;
 22             position: relative;
 23             margin-left: 10px;
 24             margin-top: 10px;
 25             text-align: center;
 26 
 27         }
 28 
 29         #esc{
 30             font-size: small;
 31         }
 32 
 33         #pause{
 34             margin-top: 10px;
 35             margin-left: 10px;
 36             float: left;
 37             border: 1px solid red;
 38             text-align: center;
 39             font-size: small;
 40         }
 41 
 42         #tab{
 43             margin-top: 10px;
 44             margin-left: 10px;
 45             float: left;
 46             height: 50px;
 47             width: 70px;
 48             border: 1px solid red;
 49             text-align: center;
 50         }
 51 
 52         #cap{
 53             margin-top: 10px;
 54             margin-left: 10px;
 55             float: left;
 56             height: 50px;
 57             width: 85px;
 58             border: 1px solid red;
 59             text-align: center;
 60         }
 61 
 62         #enter{
 63             margin-top: 10px;
 64             margin-left: 10px;
 65             float: left;
 66             height: 50px;
 67             width: 85px;
 68             border: 1px solid red;
 69             text-align: center;
 70         }
 71 
 72         #shift{
 73             margin-top: 10px;
 74             margin-left: 10px;
 75             float: left;
 76             height: 50px;
 77             width: 100px;
 78             border: 1px solid red;
 79             text-align: center;
 80         }
 81 
 82         #space{
 83             margin-top: 10px;
 84             margin-left: 10px;
 85             float: left;
 86             height: 50px;
 87             width: 370px;
 88             border: 1px solid red;
 89             text-align: center;
 90         }
 91 
 92         #insert{
 93             margin-top: 10px;
 94             margin-left: 10px;
 95             float: left;
 96             border: 1px solid red;
 97             text-align: center;
 98             font-size: small;
 99         }
100 
101         #delete{
102             margin-top: 10px;
103             margin-left: 10px;
104             float: left;
105             border: 1px solid red;
106             text-align: center;
107             font-size: small;
108         }
109 
110         #backspace{
111             margin-top: 10px;
112             margin-left: 10px;
113             float: left;
114             height: 50px;
115             width: 100px;
116             border: 1px solid red;
117             text-align: center;
118             font-size: small;
119         }
120 
121         #ctrl{
122             margin-top: 10px;
123             margin-left: 10px;
124             float: left;
125             height: 50px;
126             width: 60px;
127             border: 1px solid red;
128             text-align: center;
129             font-size: xx-small;
130         }
131 
132         #meta{
133             margin-top: 10px;
134             margin-left: 10px;
135             float: left;
136             border: 1px solid red;
137             text-align: center;
138             font-size: small;
139         }
140     
141         #up{
142             margin-top: 10px;
143             margin-left: 10px;
144             float: left;
145             border: 1px solid red;
146             text-align: center;
147             font-size: small;
148             word-break: break-all;
149         }
150 
151         #left{
152             margin-top: 10px;
153             margin-left: 10px;
154             float: left;
155             border: 1px solid red;
156             text-align: center;
157             font-size: small;
158             word-break: break-all;
159         }
160         
161         #down{
162             margin-top: 10px;
163             margin-left: 10px;
164             float: left;
165             border: 1px solid red;
166             text-align: center;
167             font-size: small;
168             word-break: break-all;
169         }
170 
171         #right{
172             margin-top: 10px;
173             margin-left: 10px;
174             float: left;
175             border: 1px solid red;
176             text-align: center;
177             font-size: small;
178             word-break: break-all;
179         }
180 
181         .empty{
182             float: left;
183             border: 1px solid white;
184         }

 

HTML代碼:

 1 <!DOCTYPE html>
 2 <html lang="zh">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta http-equiv="X-UA-Compatible" content="IE=edge">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>鍵盤按鍵測驗2.0版</title>
 8 </head>
 9 <body>
10 
11         <h1>鍵盤按鍵測驗</h1>
12         <p>注:測驗前請先按F11,先讓瀏覽器處于全屏狀態下,否則當按下TAB鍵時,會讓當前頁面失去焦點,影響后面使用,</p>
13         <p>如果在非全屏下,失去焦點時,在任意紅框內點下滑鼠即可重新獲得焦點,</p>
14     <div id="all">
15         <!--div使用鍵盤監聽事件時,要設定tabindex=1才可以被監聽
16         -->
17         <div id="key" tabindex="1">
18             <a id="esc">ESCAPE</a><a>F1</a><a>F2</a><a>F3</a><a>F4</a><a>F5</a><a>F6</a><a>F7</a><a>F8</a><a>F9</a><a>F10</a><a>F11</a><a>F12</a><a id="pause">PAUSE</a><a id="insert">INSERT</a><a id="delete">DELETE</a>
19             <a>`</a><a>1</a><a>2</a><a>3</a><a>4</a><a>5</a><a>6</a><a>7</a><a>8</a><a>9</a><a>0</a><a>-</a><a>=</a><a id="backspace">BACKSPACE</a><a class="empty"></a>
20             <a id="tab">TAB</a><a>Q</a><a>W</a><a>E</a><a>R</a><a>T</a><a>Y</a><a>U</a><a>I</a><a>O</a><a>P</a><a>[</a><a>]</a><a class="empty"></a><a class="empty"></a>
21             <a id="cap">CAPSLOCK</a><a>A</a><a>S</a><a>D</a><a>F</a><a>G</a><a>H</a><a>J</a><a>K</a><a>L</a><a>;</a><a>'</a><a>\</a><a id="enter">ENTER</a>
22             <a id="shift">SHIFT</a><a>Z</a><a>X</a><a>C</a><a>V</a><a>B</a><a>N</a><a>M</a><a>,</a><a>.</a><a>/</a><a id="shift">SHIFT</a><a id="up">ARROWUP</a><a class="empty"></a>
23             <a id="ctrl">CONTROL</a><a id="meta">META</a><a>ALT</a><a id="space"> </a><a>META</a><a>ALT</a><a id="ctrl">CONTROL</a><a id="left">ARROWLEFT</a><a id="down">ARROWDOWN</a><a id="right">ARROWRIGHT</a>
24         </div>
25     </div>
26 </body>
27 </html>

 

JavaScript代碼:

 1         /*
 2         名稱:鍵盤測驗2.0版
 3         功能:測驗鍵盤上按鍵被按下,同時頁面上顯示的對應鍵產生變化
 4         日期:2022年8月30日22:07
 5         作者:貓降龍
 6         */
 7 
 8         //獲取ID
 9         let tagKey=document.getElementById("key");
10         //獲取a元素
11         //let tagA=tagKey.getElementsByTagName("a");
12         tagKey.focus();
13         //event是對像型別,寫成e也是同樣效果
14         tagKey.onkeydown=function(event){
15         //注:列印event會發現里面有一個key屬性
16         //列印event.key是監控鍵盤按下的是什么鍵
17         //console.log(event.key);
18                 
19         //key是event對像中的屬性
20         //let {key}=event;
21         //console.log(key);
22         //將按下的鍵名(event中的key屬性)賦值給strKey
23         let strKey=event.key;
24         //console.log("你已按下該鍵"+strKey);
25         //console.log(strKey.toUpperCase());
26         //獲取所有a標簽,不包含內容
27         let tagKey=document.querySelectorAll("a");
28         //獲取的所有a標簽,用forEach來回圈其中的內容
29         tagKey.forEach(a=>{
30 
31             //如果按下的英文鍵名轉為大寫等于a標簽的內容,則將其改為紅色背景
32             if(a.innerHTML===strKey.toUpperCase()){
33                 //a.setAttribute("style","background-color:red");
34                 a.style.backgroundColor="red";
35                 //a.style.color="red";
36             }
37         });
38         }
39 
40         //每隔500毫秒獲取一次焦點
41         setInterval(() => {
42             tagKey.focus();
43         }, 500);

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/503470.html

標籤:JavaScript

上一篇:前端面試題每日3題——2022-09-02

下一篇:【微信小程式】知識點:頁面事件

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more