JS---DOM---案例:模擬百度搜索框

来源:https://www.cnblogs.com/jane-panyiyun/archive/2019/12/11/12021825.html
-Advertisement-
Play Games

模擬百度搜索框 我的思路整理: 1. 註冊文本框抬起事件(onkeyup) 2. 處理函數: >創建臨時數組,迴圈遍歷文本框鍵入的文字內容和keywords數組,用keyWords[i].indexOf(text) == 0 來判斷,true就追加進臨時數組tempArr.push(keyWords ...


模擬百度搜索框

 

我的思路整理:

1. 註冊文本框抬起事件(onkeyup)

2. 處理函數:

--->創建臨時數組,迴圈遍歷文本框鍵入的文字內容和keywords數組,用keyWords[i].indexOf(text) == 0 來判斷,true就追加進臨時數組tempArr.push(keyWords[i])

--->bug修複:每一次鍵盤抬起,都判斷頁面有沒有div,有就刪除

--->何時出現div:判斷條件:當文本框為空,或臨時數字空,不創建div,如果有div,就刪除

--->創建div, div加到box, div設置樣式 ; 迴圈遍歷創建p,p加入新建的div;加入滑鼠進入和移開的樣式(在迴圈裡面,用命名函數,減少負荷)

 

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    #box {
      width: 450px;
      margin: 200px auto;
    }

    #txt {
      width: 350px;
    }
  </style>
</head>

<body>

  <div id="box">
    <input type="text" id="txt" value="">
    <input type="button" value="搜索" id="btn">
  </div>

  <script src="common.js"></script>
  <script>


    var keyWords = ["小楊才是最純潔的", "小楊才是最帥的", "小段是最猥瑣的", "小超是最齷齪的", "傳智播客是一個培訓機構", "傳說在傳智有個很帥很純潔的小楊", "蘋果好吃", "蘋果此次召回還是沒有中國"];
    //獲取文本框註冊鍵盤抬起事件
    my$("txt").onkeyup = function () {

      //每一次鍵盤抬起,都判斷頁面有沒有div
      if (my$("dv")) {
        //刪除一次
        my$("box").removeChild(my$("dv"));
      }

      //輸入的內容,即文本框裡面的內容,和keywords去對比
      //獲取文本框輸入的內容
      var text = this.value;
      //臨時數組--空數組------->存放對應上的數據
      var tempArr = [];
      //把文本框輸入的內容和數組中的每個數據對比
      for (var i = 0; i < keyWords.length; i++) {
        //是否是最開始出現的
        if (keyWords[i].indexOf(text) == 0) {
          tempArr.push(keyWords[i]);//追加進tempArr
        }
      }

      //如果文本框為空,且臨時數組為空,不創建div
      if (this.value.length == 0 || tempArr.length == 0) {
        //如果頁面有div,刪除div
        if (my$("dv")) {
          my$("box").removeChild(my$("dv"));
        }
        return;
      }

      //創建div 把div加入到名為box的div裡面
      var dvObj = document.createElement("div");
      my$("box").appendChild(dvObj);
      dvObj.id = "dv";
      dvObj.style.width = "350px";
      dvObj.style.border = "1px solid pink";
      //迴圈遍歷臨時數組,創建對應的P標簽
      for (var i = 0; i < tempArr.length; i++) {
        var pObj = document.createElement("p");
        //把p加到div裡面
        dvObj.appendChild(pObj);
        setInnerText(pObj, tempArr[i]);
        pObj.style.margin = 0;
        pObj.style.padding = 0;
        pObj.style.cursor = "pointer";
        pObj.style.marginTop = "5px";
        pObj.style.marginLeft = "5px";
        //滑鼠進入
        pObj.onmouseover = mouseoverHandle;
        //滑鼠離開
        pObj.onmouseout = mouseoutHandle;
      }

      function mouseoverHandle() {
        this.style.backgroundColor = "yellow";
      }
      function mouseoutHandle() {
        this.style.backgroundColor = "";
      }

    };
  </script>

</body>

</html>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 定時器 參數1:函數 參數2:時間 毫秒 1000毫秒--1秒 執行過程: 頁面載入完畢後, 過了1秒, 執行一次函數的代碼, 又過了1秒再執行函數..... 返回值就是定時器的id值 var timeId = setInterval(function () { alert("hello"); }, ...
  • 第二章 需提前瞭解的術語和概念 1. 務必瞭解的CSS世界的專業術語如 1. 屬性: 如上 height , color 2. 值 1. 整數值:z index:1 中的1,屬於,也是 2. 數值: line height:1.5 中的1.5,屬於 3. 百分比值:padding:50%中的50%。 ...
  • 基本使用 寫在Script 標簽里 引入外部js文件:\ console.log(" ") 方法用於在控制台輸出信息 註意事項 嚴格區大小寫 每一行完整語句後面加分號 變數名不能使用關鍵字和保留字 代碼要縮進,保持可讀性 修改元素內容 獲取元素 通過id獲取元素:document.getElemen ...
  • 原生JS DOM的內置屬性 outerHTML 可用來獲取當前節點的html代碼(包含當前節點),且此屬性可使用jQuery的prop()獲取 <div id="demo-test-01"><p>Hello World !!!</p></div> <script> $(function () { l ...
  • 一.插槽是個什麼玩意,能吃嗎 在vue中【插槽】,從字面意思來看,插槽意味著【內容的增加】,回到vue的使用場景,插槽就是【父組件調用子組件時,額外增加的內容】。 插槽顯不顯示、顯示的內容是由父組件來控制的,而插槽在哪裡顯示由子組件來決定 二.插槽怎麼用,好用嗎 1.預設插槽 父組件 1 <temp ...
  • BOM JavaScript分三個部分: 1. ECMAScript標準 基本語法 2. DOM >Document Object Model 文檔對象模型,操作頁面元素的 3. BOM >Browser Object Model 瀏覽器對象模型, 操作瀏覽器的 瀏覽器中有個 頂級對象 :windo ...
  • 一.介紹 當你要在手機軟鍵盤中觸發一些方法,就可以使用input標簽的bindconfirm事件.這個事件的作用是當你在軟鍵盤上點擊確認的時候,將觸發你指定的方法. 還可以使用confirm-type指定軟鍵盤上確認按鈕的名稱.比如你用這個來做搜索框,那麼你就可以指定為confirm-type=“s ...
  • //格式化日期的代碼 //獲取指定標簽對象 //獲取元素的文本內容 //獲取元素的文本內容 //獲取父級元素中的第一個子元素 //獲取父級元素中的最後一個子元素 //獲取某個元素的前一個兄弟元素 //獲取某個元素的後一個兄弟元素 //獲取某個元素的所有兄弟元素 //返回當前瀏覽器是什麼類型的瀏覽器 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...