JS实用案例之输入智能提示(打字机输出效果)

yizhihongxing

下面是对“JS实用案例之输入智能提示(打字机输出效果)”进行详细讲解的完整攻略。

1. 概述

“JS实用案例之输入智能提示(打字机输出效果)”是一个JS实用案例,它通过在用户输入时展示智能提示等方法,提高了网站的用户交互体验。本文将介绍该案例的详细实现方法。

2. 技术要点

  • JavaScript
  • HTML
  • CSS

3. 实现过程

3.1. 编写HTML和CSS

首先,在HTML中添加一个输入框和一个用于展示智能提示的ul标签:

<input type="text" id="keyword" placeholder="请输入搜索关键词...">
<ul id="search-suggest"></ul>

然后,在CSS中对ul标签进行一些样式调整:

#search-suggest {
  border: 1px solid #ccc;
  padding: 0;
  margin: 0;
  background-color: #fff;
  list-style: none;
  position: absolute;
  left: 0;
  top: 34px;
  width: 300px;
  max-height: 150px;
  overflow-y: auto;
  z-index: 100;
  display: none;
}

#search-suggest li {
  padding: 10px;
  cursor: pointer;
}

#search-suggest li:hover {
  background-color: #f5f5f5;
}

3.2. 实现智能提示

接下来,我们需要实现输入框的智能提示功能。输入框在每次输入的时候,都会触发keydown事件,在事件处理函数中,我们监听按键的值,如果是拉丁字母或输入空格、删除键,在触发动态获取数据并进行匹配操作,然后将匹配结果展示在下拉列表中:

const suggest = document.querySelector("#search-suggest");
const keywordInput = document.querySelector("#keyword");

keywordInput.addEventListener("keydown", e => {
  const key = e.key;
  if (/[a-zA-Z0-9\s]/.test(key)) {
    suggest.style.display = "block";
    const keyword = keywordInput.value;
    if (keyword) {
      fetchData(keyword).then(matches => {
        renderMatches(matches);
      });
    }
  }
});

// 根据输入的关键词获取数据
function fetchData(keyword) {
  return fetch(`https://api.cdnjs.com/libraries?search=${keyword}`)
    .then(response => {
      return response.json();
    })
    .then(data => {
      return data.results.map(item => item.name);
    });
}

// 渲染匹配结果
function renderMatches(matches) {
  suggest.innerHTML = "";
  for (let match of matches) {
    const li = document.createElement("li");
    li.textContent = match;
    suggest.appendChild(li);
  }
}

3.3. 实现打字机输出效果

最后,我们需要实现在用户选中下拉列表中的某个选项时,展示选项的打字机输出效果。实现方法是:

在智能提示下拉列表中添加一个 mouseover 事件监听器,当鼠标在某一匹配结果上移动时,将该匹配结果存储在一个变量中,当用户选中该项时,将该项插入到输入框中,并展示打字机输出效果:

let selectedMatch = "";

suggest.addEventListener("mouseover", e => {
  if (e.target.tagName.toLowerCase() === "li") {
    selectedMatch = e.target.textContent;
  }
});

suggest.addEventListener("click", e => {
  if (e.target.tagName.toLowerCase() === "li") {
    keywordInput.value = selectedMatch;
    suggest.style.display = "none";
    typeText(selectedMatch);
  }
});

// 打字机输出效果
function typeText(text) {
  const len = text.length;
  let i = 0;
  const intervalId = setInterval(() => {
    if (i >= len) {
      clearInterval(intervalId);
    } else {
      keywordInput.value = text.slice(0, ++i);
    }
  }, 100);
}

4. 示例说明

4.1. 示例一:为搜索框添加智能提示

我们有一个搜索框,需要为其添加智能提示功能。用户可以在搜索框中输入关键词,系统会在后台发送请求,根据关键词搜索目标数据并返回匹配结果,在下拉列表中展示匹配结果。当用户选中某个匹配结果时,系统会将匹配结果展示在搜索框内,并使用打字机输出效果展示出来。

4.2. 示例二:添加公共库搜索功能

我们的网站需要一个公共库搜索功能,可以让用户搜索主流的前端库。在输入框中输入关键词时,系统展示与关键词匹配的前端库名称,并支持打字机输出效果。用户在选中某个匹配结果后,会重定向到该库的官网。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实用案例之输入智能提示(打字机输出效果) - Python技术站

(1)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • HTA版JSMin(省略修饰语若干)基于javascript语言编写

    HTA版JSMin 基于javascript语言编写的完整攻略 什么是HTA版JSMin HTA版JSMin是一个基于javascript语言编写的代码压缩工具,可以将javascript代码文件进行压缩和精简,从而减少代码文件的大小,加速加载速度。 如何使用HTA版JSMin 下载HTA版JSMin的压缩包并解压缩:https://github.com/d…

    JavaScript 2023年5月19日
    00
  • javascript倒计时效果代码,可以方便参数调用

    下面是详细讲解“javascript倒计时效果代码,可以方便参数调用”的完整攻略。 1. 简介 倒计时效果是网页中常用的一种效果之一,通过倒计时效果,可以更加直观地显示剩余时间,那么如何通过 JavaScript 实现一个可复用且方便调用的倒计时组件呢? 本文将介绍如何使用 JavaScript 制作一个简单、易用、易扩展的倒计时组件,并通过示例代码演示如何…

    JavaScript 2023年5月27日
    00
  • 使用nodejs解析json数据

    使用Node.js解析JSON数据的完整攻略可以分为以下几个步骤: 读取JSON数据文件 将JSON数据转换为JavaScript对象 操作JavaScript对象 以下是使用Node.js解析JSON数据的示例代码: 1. 读取JSON数据文件 使用Node.js的fs模块可以读取JSON数据文件。我们将使用fs.readFileSync()函数同步读取J…

    JavaScript 2023年5月27日
    00
  • javascript 通用loading动画效果实例代码

    对于这个问题,我可以提供以下完整攻略: JavaScript 通用 Loading 动画效果实例代码 什么是 Loading 动画 Loading 动画指的是在某些长时间操作(例如网络请求或计算)期间,为了让用户知道应用程序正在运行中,而在屏幕上呈现的动画效果。通常采用旋转、脉冲或进度条等形式。 如何实现 Loading 动画 HTML & CSS …

    JavaScript 2023年6月10日
    00
  • JSON辅助格式化处理方法

    JSON格式是一种轻量级的数据交换格式,常用于前后端数据传输和存储。而格式杂乱、不易阅读的JSON数据对于开发和调试过程中处理和理解都会造成困难。因此,JSON辅助格式化处理方法就变得非常重要,本文将会详细讲解该方法的攻略。 什么是JSON格式化? JSON格式化是指通过对不可读的JSON数据按照一定的规则进行排版和缩进,使其更易于阅读和理解的过程。常规的J…

    JavaScript 2023年5月27日
    00
  • JS实现网络请求的三种方式梳理

    JS实现网络请求的三种方式梳理 在JavaScript开发中,网络请求是不可或缺的一部分,下面是三种常用的实现网络请求的方式: 1. XMLHttpRequest请求 XMLHttpRequest是一个原生JavaScript对象,它是一个浏览器提供的api,用来在浏览器和服务器之间发送HTTP请求和接收服务器数据。XMLHttpRequest请求的基本流程…

    JavaScript 2023年6月11日
    00
  • Javascript实现秒表倒计时功能

    下面是“Javascript实现秒表倒计时功能”的完整攻略。 1. 准备工作 在开始编写代码实现倒计时功能之前,我们需要先准备一些基本的内容。具体包括以下几点: 1.1 确定计时的起点和终点 倒计时功能要想实现,我们需要确定计时的起点和终点。你可以自己设定一个时间,如5分钟(300秒),也可以通过用户输入动态获取倒计时的时间。 1.2 设计页面元素 在页面上…

    JavaScript 2023年5月27日
    00
  • js读取cookie方法总结

    JS 读取 Cookie 方法总结 什么是 Cookie? Cookie 是一种存储在用户计算机上的小文件,包含了与某个网站相关的用户信息。浏览器每次向服务器发送请求时,会将 Cookie 信息附加在 HTTP 请求头部中,服务器端可以通过从头部解析得到的 Cookie 信息来判断用户状态并作出相应的响应。 如何读取 Cookie? 以下是几种常用的 JS …

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部