完整代码:Javascript模拟百度搜索

js实现模拟百度搜索

首先,我们分析一下需求,不妨来观察一下百度搜索:百度

在这里插入图片描述

我们能够发现以下几点:

1.当我们输入时可以看到总是从前到后匹配关键字 。
2.下面的div不输入时不显示,输入完按键弹起时显示并且匹配内容。
3.鼠标点击内容后,内容显示到文本框,并且跳转。

对应需求我们能想到的解决办法:

1.indexOf()方法;
2.onkeyup事件;
3.onclick事件;

下面让我们来看完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>我家yueyueyue来越好看</title>
    <style>
    #box {
        width: 450px;
        margin: 200px auto;
      }
  
      #txt {
        width: 350px;
      }
      /*p标签样式用于绑定*/
      .p{
          margin: 0px;
          padding: 0px;
          cursor: pointer;
          margin-top: 5px;
          margin-left: 5px;
      }
      /*div样式用于绑定*/
      .div{
        width: 350px;
        border: 1px solid pink;
      }
    </style>
</head>
<body>
    <div id="box">
    <input type="text" id="txt" value="">
    <input type="button" value="百度一下" id="btn">
</div>
    <script src="commom.js"></script>
    <script>
        //模拟数据来源
        var keyWords = ["小杨是最纯洁的", "小杨是最帅的", "狂龙傲天拳", "九阴白骨爪", "灵气寒霜指", "惊天混元掌", "八卦迷踪腿", "乾坤大挪移", "如来神掌", "独狐九剑"];
        //没此抬起都检测有没有div 如果有就删除
        myid$("txt").onkeyup = function(){
            if(myid$("dv"))
            {
                myid$("box").removeChild(myid$("dv"));
            }
            //获取文本框的内容
            var text = this.value;
            //新建一个临时数组
            var linObj = [];
            for (let i = 0; i < keyWords.length; i++) {
                //顺序查找
                if(keyWords[i].indexOf(text) == 0)
                {
                    //追加到临时数组中去
                    linObj.push(keyWords[i]);
                }
                
            }
            
            //判断当没有输入时,删除div
            if(this.value.length == 0 || linObj.length == 0)
            {
                if(myid$("dv"))
                 {
                     myid$("box").removeChild(myid$("dv"));
                 }
                return;
            }
            //创建div
            var dvObj = document.createElement("div");创建元素,此时虽创建,但不显示。
            myid$("box").appendChild(dvObj);//插入到html中
            dvObj.id = "dv";//设置Id
            dvObj.className = "div";//绑定样式 
            //遍历生成p标签
            for (let i = 0; i < linObj.length; i++) {
                var pObj = document.createElement("p");
                dvObj.appendChild(pObj);
                pObj.innerText = linObj[i];
                pObj.className = "p";//绑定样式
                //注册点击事件
                pObj.onclick = function(){
                    myid$("txt").value = this.innerText;//设置文本框的value
                    myid$("box").removeChild(myid$("dv"));//同时移除div
                }
            } 
        }
            
    </script>
</body>
</html>

说明:commom.js文件是封装的方法,见代码如下:

    function myid$(myid){
         var id=myid;
     return document.getElementById(id);
    }

谢谢浏览,如有不清楚,或者建议欢迎留言!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
百度网盘的批量下载通常需要借助一些用户脚本工具,如Tampermonkey(油猴插件),来自动化这个过程。以下是一个简单的油猴脚本示例,用于批量下载文件链接。请注意,这只是一个基本框架,并非可以直接运行,因为实际操作可能会受到百度网盘反爬策略的影响: ```javascript // ==UserScript== // @name 百度网盘批量下载助手 // @namespace http://tampermonkey.net/ // @version 1.0 // @description 自动批量下载百度网盘链接 // @author Your Name // @match https://pan.baidu.com/disk/home* // @grant none // ==/UserScript== (function() { 'use strict'; // 替换为你的百度账号登录后的cookie信息 const cookieString = 'your_baiduyun_cookie_here'; // 匹配需要下载的文件列表元素 const downloadLinksSelector = '.file-item .file-name a'; // 获取所有需要下载的链接 const links = document.querySelectorAll(downloadLinksSelector); links.forEach((link) => { if (link.href && link.href.startsWith('http')) { // 检查是否为有效的下载链接 // 使用cookie模拟登录 link.href += `?access_token=${decodeURIComponent(cookieString)}`; // 添加点击事件并执行下载 link.addEventListener('click', function(e) { e.preventDefault(); // 阻止默认的跳转行为 window.location.href = this.href; // 打开链接进行下载 }); } }); })(); ``` **注意事项:** 1. 这个脚本依赖于浏览器的JavaScript环境和网络环境,可能无法保证在所有情况下都能正常工作。 2. 确保你的百度账户安全,不要随意将cookies暴露给脚本。 3. 定期检查百度网盘是否有新的反爬机制,如果遇到错误,可能需要更新脚本来适应新规则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值