第8次修改的备忘录:暂时还没有做本地保存

news2024/11/17 19:36:50

第8次修改的html备忘录

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>与妖为邻的备忘录</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        body {
            display: grid;
            align-items: center;
            justify-content: center;
        }
        .container-left {
            background: rgb(216, 195, 157);
        }
        .container-left textarea {
            min-height: 30px;
            outline: none;
            font-size: 16px;
            margin-bottom: 5px;
            border-radius: 5px;
            padding: 0 5px;
            border: 1px solid rgb(69, 126, 123);
        }
        .container-left button {
            border-radius: 5px;
            font-size: 15px;
            padding: 1px 5px;
            margin: 1px 5px;
            cursor: pointer;
        }
        .container-right {
            overflow-y: auto;
            background: rgb(160, 240, 178);
        }
        .container-right table {
            cursor: default;
            border: 1px solid #000;
        }
        .container-right table {
            width: 500px;
            text-align: center;
            margin: 2px 1px;
        }
        .container-right table thead td {
            color: #fff !important;
            background: rgb(73, 187, 58);
        }
        .container-right table tr td {
            font-size: 18px;
            color: #000;
            border: 1px solid #000;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }
        .container-right table tr td button {
            cursor: pointer;
        }
        .container-right table tr td input {
            text-align: center;
        }
        .delete {
            color: #fff;
            background-color: #f00;
        }
        .change {
            background-color: #0f0;
        }
        .container-right table tr td span {
            cursor: pointer;
            text-align: center;
            display: inline-block;
            border-radius: 5px;
            background-color: antiquewhite;
        }
        .container-right table tr td span:hover {
            color: #fff;
            background-color: rgb(172, 163, 152);
        }
    </style>
</head>
<body>
    <h1 align="center">
        <dfn>备忘录
        </dfn>(memorandum)
    </h1>
    <div class="container">
        <div class="container-left">
            <form action="#" method="GET">
                <textarea rows="1" cols="50%" placeholder="请输入备忘内容"></textarea>
                <button type="button" class="btn">添加</button>
                <button type="reset">重置</button>
            </form>
        </div>
        <div class="container-right">
            <!--cellpadding 是边框与其内容的间隙大小;cellspacing 是边框与边框之间的间隙大小;-->
            <table cellpadding="0" cellspacing="0">
                <thead>
                    <td>序号</td>
                    <td>备忘信息</td>
                    <td>移除</td>
                    <td>修改</td>
                    <td>移动</td>
                </thead>
                <tbody>
                </tbody>
            </table>
        </div>
    </div>
    <script>
        /*********************一个html提示弹窗无需点击的函数 ******************************/
        function displayAlert(type, data, time) {
            var a = document.createElement("a");
            if (type == "info") {
                a.style.backgroundColor = "#990000";
            }
            a.id = "a";
            a.style.position = "absolute";
            a.style.width = "420px";
            a.style.height = "60px";
            a.style.marginLeft = "-100px";
            a.style.marginTop = "-30px";
            a.style.left = "30%";
            a.style.top = "15%";
            a.style.color = "white";
            a.style.fontSize = "25px";
            a.style.borderRadius = "20px";
            a.style.textAlign = "center";
            a.style.lineHeight = "60px";
            if (document.getElementById("a") == null) {
                document.body.appendChild(a);
                a.innerHTML = data;
                setTimeout(function () {
                    document.body.removeChild(a);
                }, time);
            }
        }
        /********************* //TODO 1.获取元素 ******************************/
        // 获取存放数据位置的tbody标签
        var tbody = document.querySelector('tbody');
        // 获取输入数据区域的textarea的标签
        var inputs = document.querySelectorAll('.container-left textarea');
        // 获取触发添加功能的button按钮
        var btn = document.querySelector('.btn');
        // 设定序号初始值
        var number = 0;
        // 判断记录值
        var flag = true;
        // 定义空对象,存放输入数据
        var message = {};
        // 定义空数组,存放对象
        var students = [];
        /********************************** // TODO 2.添加功能 *********************************************/
        // 给button按钮添加点击事件
        btn.addEventListener('click', function () {
            // 输入框非空判断
            if (inputs[0].value != '' && inputs[0].value != null) {
                // 将输入的数据存入数组
                message = {
                    "number": number,
                    'id': inputs[0].value
                };
                // 调用去重函数
                clearMess();
                // 启用自动数据重置
                // reset.click();
            } else {
                // 空数据提示
                // alert("数据输入不完全,请重新输入数据");
                displayAlert("info", "数据为空,请重新输入数据!", 1500);
            };
        });
        /**********************************   //TODO3 去重函数 *********************************************/
        function clearMess() {
            if (students.length > 0) {
                for (var i = 0; i < students.length; i++) {
                    if (students[i].id == message.id) {
                        displayAlert("info", "信息重复,请重新输入!", 1500);
                        // alert("键值重复,请重新输入");
                        return false;
                    };
                };
                students.push(message);
            } else {
                students.push(message);
            };
            //  调用回显函数
            innerMess();
        };
        /**********************************   //TODO4 回显函数 *********************************************/
        function innerMess() {
            // 生成表格内容区域
            if (flag) {
                // 创建新的tr节点
                var trs = document.createElement('tr');
                tbody.appendChild(trs);
                // 每次创建一个tr,number+1
                number++;
                // 创建一个td,接收number值,赋予序号的含义
                var tdNum = document.createElement('td');
                tdNum.classList.add('nums');
                tdNum.innerHTML = number;
                trs.appendChild(tdNum);
                // 将输入框的值赋予到新创建的td
                for (var i = 0; i < inputs.length; i++) {
                    var tds = document.createElement('td');
                    tds.innerHTML = inputs[i].value;
                    trs.appendChild(tds);
                };
                // 创建移除操作按钮 - 删除
                var deleteBtn = document.createElement('td');
                deleteBtn.innerHTML = `<button class="delete" onclick='deleteMess(this)'>删除</button>`;
                trs.appendChild(deleteBtn);
                // 创建修改操作按钮 - 修改
                var changeBtn = document.createElement('td');
                changeBtn.innerHTML = `<button class="change" onclick='changeMess(this)'>修改</button>`;
                trs.appendChild(changeBtn);
                // 创建数据移动按钮 - 移动
                var doingBtn = document.createElement('td');
                doingBtn.innerHTML = `<span onclick="upMess(this)">↑</span>
                                        <span onclick="downMess(this)">↓</span>`;
                trs.appendChild(doingBtn);
            };
        };
        /*****************************************    //TODO 删除函数****************************************************************/
        function deleteMess(element) {
            // 获取到当前标签的序号
            var deleteIndex = element.parentNode.parentNode;
            if (confirm("是否确认操作")) {
                //  先删除标签
                deleteIndex.remove();
                // 再根据序号删除数组中的对应数据
                for (var i = 0; i < students.length; i++) {
                    if (students[i].id == deleteIndex.children[1].innerHTML) {
                        students.splice(i, 1);
                    }
                };
                displayAlert("info", "删除成功!", 1500);
                // alert('操作成功');
                var nums = document.querySelectorAll('.nums');
                // 删除行的同时,控制删除行以外行数序号的删减
                var index;
                if (nums.length > 0) {
                    for (var i = 0; i < nums.length; i++) {
                        index = i;
                        var nums = document.querySelectorAll('.nums');
                        nums[index].innerHTML = index + 1;
                    };
                };
                console.log(students);
                number--;
            };
        };
        /***************************** TODO 修改函数****************************************************************/
        function changeMess(element) {
            var tds2 = element.parentNode.parentNode.children;
            for (var i = 1; i < tds2.length - 3; i++) {
                inputs[i - 1].value = tds2[i].innerHTML;
                // tds2[i].innerHTML = `<input type="text" value='${tds2[i].innerText}'/>`;
            };
            //  element.parentNode.innerHTML = `<button class="change" onclick='updateMess(this)'>更新</button>`;
        };
        /*****************  //TODO 更新函数 ****************
          function updateMess(element) {
           var tdsInp = document.querySelectorAll('table input');
           var firstNumber = parseInt(element.parentNode.parentNode.firstElementChild.innerHTML);
           var tds3 = element.parentNode.parentNode.children;
           students.splice(firstNumber - 1, 1);
           for (var i = 0; i < students.length; i++) {
               if (students[i].id == tdsInp[1].value) {
                   alert("键值重复,请重新输入");
                   return false;
               };
           };
           var message2 = {
               "number": firstNumber - 1,
               "id": tdsInp[0].value
           };
           students.push(message2);
           for (var i = 0; i < tdsInp.length; i++) {
               tds3[i + 1].innerHTML = tdsInp[i].value;
           };
           inputs[3].removeAttribute('disabled');
           reset.click();
           element.parentNode.innerHTML = `<button class="change" onclick='changeMess(this)'>修改</button>`;
       };*/
        /*****************************    // TODO 数据位置向上移动函数****************************************************************/
        function upMess(element) {
            var trsUp = document.querySelectorAll('tbody tr');
            if (element.parentNode.parentNode.children[0].innerHTML == 1) {
                displayAlert("info", "移动失败,数据无法再向上移动!", 1500);
            } else {
                for (var i = 1; i <= 1; i++) {
                    var temps = element.parentNode.parentNode.children[i].innerHTML;
                    element.parentNode.parentNode.children[i].innerHTML = element.parentNode.parentNode.previousElementSibling
                        .children[i].innerHTML;
                    element.parentNode.parentNode.previousElementSibling.children[i].innerHTML = temps;
                };
            };
        };
        /*****************************    // TODO 数据位置向下移动函数****************************************************************/
        function downMess(element) {
            if (element.parentNode.parentNode.children[0].innerHTML == students.length) {
                displayAlert("info", "移动失败,数据无法再向下移动!", 1500);
            } else {
                for (var i = 1; i <= 1; i++) {
                    var temps2 = element.parentNode.parentNode.children[i].innerHTML;
                    element.parentNode.parentNode.children[i].innerHTML = element.parentNode.parentNode.nextElementSibling
                        .children[i].innerHTML;
                    element.parentNode.parentNode.nextElementSibling.children[i].innerHTML = temps2;
                };
            };
        };
    </script>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1395969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA和C++ SECS/GEM300开发和概念

编译SECS示例程序 1. 示例程序使用默认路径&#xff1a; D:\SECS 稳定版\SECS Debug\ 2. 该操作分为俩步 ① 将C#的Secs库编译成设备相同Net版本。 如.net3.5、4.0、4.5等等 ② 编译金南瓜SECS demo程序 编译C#的SecsEquip.dll 1. 找到SecsEquip项目 项目文件 使用Visua…

零售的数字化转型,利用AWS云服务资源如何操作?

国内市场趋于饱满&#xff0c;各行各业的发展接近瓶颈&#xff0c;就连零售行业都竞争激烈&#xff0c;随处可见的零售小店也预示着需要投入大量的人力&#xff0c;而且由于消费者的行为和预期已经发生了根本性变化&#xff0c;这迫使零售商不得不加速整个价值链的数字化转型&a…

进程间通信之利用命名管道进行通信

文章目录 什么是命名管道命名管道的作用有什么命名管道的特点和用法是什么命名管道与匿名管道有什么区别匿名管道相较于命名管道的局限性 命名管道如何使用代码 什么是命名管道 命名管道&#xff08;Named Pipe&#xff09;&#xff0c;也被称为FIFO&#xff08;First In, Fir…

什么是车载信息娱乐系统和集成驾驶舱

什么是车载信息娱乐系统(IVI)? “车载信息娱乐(IVI)”通过向驾驶员和乘客提供信息和娱乐&#xff0c;为驾驶提供便利和舒适。为了理解这个概念&#xff0c;有必要知道“信息娱乐”的含义。“信息娱乐”是这个市场中使用的一个词&#xff0c;它结合了“信息”和“娱乐”两个词…

【GNN】人大魏哲巍“青源Talk”图机器学习

目录 简介 图学习历史与应用 历史-哥尼斯堡七桥问题 图历史发展介绍 图神经网络 应用&#xff08;&#xff01;&#xff01;&#xff09; 图学习近期工作 概况 图卷积神经网络&#xff08;ICML&#xff0c;NIPS&#xff0c;KDD&#xff09; 大规模图神经网络&#xf…

SCSI/UFS储存架构/协议/电源管理/命令处理流程

UFS子系统架构 1.UFS协议 无论是ufs host controller部分还是ufs device部分&#xff0c;他们都将遵循统一的UFS规范 UFS Application Layer(UAP)应用层 1.UFS command set (UCS) UCS处理命令集&#xff0c;如读、写命令等&#xff0c;.使用的命令是简化的SCSI命令&#xff08;…

houdini rnn

1.3.RNN模型_哔哩哔哩_bilibili 此公式来自于吴恩达P1.3视频 按公式推测rnn内部结构,如有错误&#xff0c;敬请指正

【Linux 命令】tree 对目录进行树形展示

目录 1、tree 命令功能展示 2、tree 命令安装 3、tree 命令语法及其参数功能 4、终止 tree 展开树命令 1、tree 命令功能展示 在 Linux 中&#xff0c;我们使用 ll 命令对目录的展示并不太方便我们查看&#xff0c;不太清晰明了&#xff0c;所以我们可以使用 tree 命令以…

uniapp web-view组件双向通信

前言 本文主要介绍在uniapp中页面与webview组件内页面的双向通信问题。 准备 uniapp项目 调用webview组件 <web-view src"/hybrid/html/index.html"></web-view> Web项目 项目目录 在uniapp项目根目录下新建hybrid/html目录&#xff0c;web项目文件…

C语言第二弹---C语言基本概念(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 C语言基本概念 1、字符串和\02、转义字符3、语句和语句分类3.1、空语句3.2、表达式语句3.3、函数调⽤语句3.4、复合语句3.5、控制语句 4、注释4.1、注释的两种形…

CSS常见元素类型 盒子模型

文章目录 常见元素类型块元素内联元素空元素修改元素类型测试元素类型 盒子模型标准文本流:外边距和内边距测试盒子模型 常见元素类型 块元素 常见块元素: div p h1~h6 ul li img 这些元素结束之后自带换行&#xff0c;一行只能存在一个元素&#xff0c;无法横向排列&#xf…

建筑类中级工程师职称证明业绩材料有哪些?

三、建筑类中级工程师职称造价类工程业绩材料 1.合同&#xff1a;证明项目合作关系的凭证。 2.预&#xff08;结&#xff09;算报告等(重点是体现封面有你的名字和执业印章等) 3.单位证明或任命书(本人在项目中的职务聘书) 4.工程获奖证明&#xff1a;项目获得市优的证书、省优…

RabbitMQ交换机(3)-Topic

1.Topic模式 RabbitMQ的Topic模式是一种基于主题的消息传递模式。它允许发送者向一个特定的主题&#xff08;topic&#xff09;发布消息&#xff0c;同时&#xff0c;订阅者也可以针对自己感兴趣的主题进行订阅。 在Topic模式中&#xff0c; 主题通过一个由单词和点号组成的字…

Python环境下基于优化时频分辨率的信号时频分析

时频分析方法使用时-频域联合分布描述时间序列信号的瞬态特征&#xff0c;并通过瞬时频率估计来表征信号的特征频率随时间变化的趋势&#xff0c;在时间序列信号处理中得到了广泛的应用。STFT 和WT等常用的时频分析方法时频分辨率较低&#xff0c;而且对于多分量时变信号的匹配…

【Azure 架构师学习笔记】- Azure Databricks (6) - 配置Unity Catalog

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (5) - Unity Catalog 简介 UC的关键特性 之所以DataBricks要用UC&#xff0c; 很大程度是对安全的管控。从上文可以了解到它的四大特性&#…

ELK之Filebeat输出日志格式设置及输出字段过滤和修改

一、Filebeat输出日志格式设置 1.1 编辑vim filebeat.yml文件,修改输出格式设置 # output to console output.console:codec.format: string: %{[@timestamp]} %{[message]}pretty: true### 1.2 测试 执行 ./filebeat -e 可以看到/tmp/access.log(目前文件里只有140.77.188…

HCIP-7

IPV6: 为什么使用IPV6&#xff1a; V4地址数量不够V4使用NAT&#xff0c;破坏了端到端原则 IPV6的优点&#xff1a; 全球单播地址聚合性强&#xff08;IANA组织进行合理的分配&#xff09;多宿主----一个接口可以配置N个地址--且这些地址为同一级别自动配置---1&#xff09;…

【概述版】悲剧先于解析:在大型语言模型的新时代,历史重演了

这篇论文探讨了大型语言模型&#xff08;LLM&#xff09;的成功对自然语言处理&#xff08;NLP&#xff09;领域的影响&#xff0c;并提出了在这一新时代中继续做出有意义贡献的方向。作者回顾了2005年机器翻译中大型语法模型的第一个时代&#xff0c;并从中汲取教训和经验。他…

【2024最新-python3小白零基础入门】No4.python控制语句学习

文章目录 1 选择结构1.1 if语句 2 循环结构2.1 while循环语句2.2 for循环语句2.3 break、continue、pass在循环中的用途 对于 Python 程序中的执行语句,默认是按照书写顺序依次执行的,这时称这样的语句是顺序结构的。但是,仅有顺序结构还是不够的,因为有时需要根据特定的情况,有…

Git教程学习:03 记录每次更新到仓库

文章目录 1 检查当前文件状态2 跟踪新文件3 暂存已修改的文件4 状态简览5 忽略文件6 查看已暂存和未暂存的修改7 提交更新8 跳过使用暂存区域9 移除文件10 移动文件 现在我们的机器上有了一个 真实项目 的 Git 仓库&#xff0c;并从这个仓库中检出了所有文件的 工作副本。 通常…