jQuery实现王者荣耀英雄列表

用jQuery实现了王者荣耀的英雄列表,包含对英雄的增删改查功能,并且实现了本地存储功能

一、作品介绍

1、作品使用到的技术栈

  • 开发工具:Vscode
  • 语言:html、css、jQuery

2、作品实现功能

  • 可以增加各种英雄到列表中
  • 可以将英雄从列表中删除
  • 可以在列表中搜索想要展示的英雄到列表
  • 点击英雄名字可以修改英雄
  • 所有数据都实现了在本地存储

二、作品展示

作品主页

 删除英雄

 查找英雄界面 

修改英雄

  三、作品代码

项目基本结构

html代码

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../css/hero.css">
    <script src="../js/jquery.min.js"></script>
    <script src="../js/hero.js"></script>
</head>

<body>
    <header>
        <section>
            <label for="title"><img src="../images/logo.png" alt=""></label>
            <input type="text" id="search" name="search" placeholder="查找英雄" required="required" autocomplete="off">
            <input type="text" id="title" name="title" placeholder="添加英雄" required="required" autocomplete="off">
        </section>
    </header>
    <section class="hero-box">
        <div class="max-box">
            <div class="box-tit">
                <div class="have">共3个英雄</div>
                <div class="return">返回列表</div>
                <h3>英雄列表</h3>
                <div class="del">全部删除</div>
            </div>
            <div class="box-content">
                <div class="main-list">
                    <ol></ol>
                    <ul></ul>
                </div>
            </div>
        </div>
    </section>

</body>

</html>

jQuery代码

$(function() {
    // 按下回车 把完整的数据 存储到本地存储里面
    // 存储的数据格式 var hero = [{title : "xxx"}]
    load();
    // 添加英雄
    $("#title").on("keydown", function(event) {
        if (event.keyCode === 13) {
            if ($(this).val() == "" || $(this).val() == " ") {
                alert("请输入英雄名");
            } else {
                $("h3").text("英雄列表");
                // 清空 ol 内容
                $("ol").empty();
                // 先读取本地存储原来的数据
                var local = getDate();
                // 把 local 数组进行更新数据 把最新的数据追加给 local 数组
                local.push({ title: $(this).val() });
                // 把这个数组 local  存储给本地存储  传递参数是为了把 local 传递给函数
                saveDate(local);
                // hero 本地存储数据渲染加载到页面
                load();
                // 清空 input 内容
                $(this).val("");
            }
        }
    });

    // 查找英雄
    $("#search").on("keydown", function(event) {
        if (event.keyCode === 13) {
            if ($(this).val() == "" || $(this).val() == " ") {
                alert("请输入英雄名");
            } else {
                // 修改标题
                $("h3").text("查找结果");
                // 把返回列表给显示出来
                $(".return").show();
                // 先读取本地存储原来的数据
                var data = getDate();
                var count = 0;
                $("ol, ul").empty();
                // 遍历数组
                $.each(data, function(i, n) {
                    if ($("#search").val() == n.title) {
                        // $("ul").empty();
                        $("ol").prepend("<li><img src = '../images/" + n.title + ".webp' alt = ''><div class = 'list-cont'><span>" + n.title + "</span></div><div class = 'small-del' id = " + i + "></div></li>")
                        count++;
                    }
                })
                $(".have").text("共" + count + "个英雄");
                // 清空 input 内容
                $("#search").val("");
            }
        }
    })

    // 添加返回列表
    $(".return").on("click", function() {
        // 刷新页面
        location.reload(true);
    });

    // 删除全部
    $(".del").click(function() {
        // 先获取本地存储
        var data = getDate();
        // 得到 data 的长度
        var index = data.length;
        // 删除数据 从第 0 个开始删,删除 index 个(数组的长度)
        data.splice(0, index);
        // 保存到本地存储
        saveDate(data);
        // 重新渲染页面
        load();
    });

    // 读取本地存储的数据
    function getDate() {
        var data = localStorage.getItem("hero");
        if (data !== null) {
            // 本地存储里面的数据是字符串格式的 但是我们需要的是对象格式的
            return JSON.parse(data);
        } else {
            return [];
        }
    }

    // 保存本地存储数据
    function saveDate(data) {
        localStorage.setItem("hero", JSON.stringify(data));
    }

    // 渲染加载数据
    function load() {
        // 读取本地存储数据
        var data = getDate();
        // 遍历之前先要清空 ul 里面的元素内容
        $("ul").empty();
        var count = 0;
        // 遍历这个数据
        $.each(data, function(i, n) {
            $("ul").prepend("<li id = " + i + "><img src = '../images/" + n.title + ".webp' alt = ''><div class = 'list-cont'><span>" + n.title + "  </span> <input type='text' id='change' placeholder='' name='change' required='required' autocomplete='off' ></div><div class = 'small-del' id = " + i + "><img src = '../images/del.png' ></div></li>")
            count++;
        })
        $(".have").text("共" + count + "个英雄");

        // hero 删除单个操作
        $("li").on("click", ".small-del", function() {
            // 先获取本地存储
            var data = getDate();
            // 修改数据
            var index = $(this).attr("id"); // 获取自定义属性 得到索引号
            data.splice(index, 1);
            // 保存到本地存储
            saveDate(data);
            // 重新渲染页面
            load();
        })

        // 修改操作
        $("span").on("dblclick", function() {

            var index = $(this).parents("li").attr("id");
            $(this).hide();
            $(this).siblings("#change").show();
            // 当输入框出来的时候将光标锁定到输入框中  运用 focus() 方法
            $(this).siblings("#change").focus();
            // $("#change").focus(); 吗  
            $(this).siblings("#change").on("keydown", function(event) {
                if (event.keyCode === 13) {
                    var data = getDate();
                    data[index].title = $(this).val(); // 数组的 title 属性设置为输入的内容
                    // 保存到本地存储
                    saveDate(data);
                    // hero 本地存储数据渲染加载到页面
                    load();
                    // 清空 input 内容
                    $(this).val("");
                }
            })

        });
    }


})

下面附上作品源码,有需要的小伙伴可以下载

链接: https://pan.baidu.com/s/1b0x_oJABCwtFkBROEfAgMQ?pwd=gkvy

提取码: gkvy 

也可以直接去我 GitHub 上面进行下载

https://github.com/Memory159/jquery-hero

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

M_emory_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值