JS实现简易留言板(节点操作)


Posted in Javascript onMarch 16, 2020

本文实例为大家分享了JS实现简易留言板的具体代码,供大家参考,具体内容如下

今天的案例主要是对节点进行操作

创建节点、添加节点、删除节点以及为节点添加内容的操作。 

就是一个简单的留言板功能,可以发布留言,删除留言。

主要思路:两个鼠标点击事件——点击发布按钮事件和点击删除按钮事件

发布按钮事件:首先在文档中创建li节点。然后第二步,先把文本域中的内容获取出来赋给li,这里要注意,文本域是表单元素,获取表单元素的内容是使用表单的特有属性value,要与普通元素获取内容的innerHTML进行区分;再把删除链接添加到li中,利用字符串拼接的方式。最后把li节点添加到ul中,添加的方式有两种,是直接添加到ul列表项的末尾,也可以添加到指定位置。这里我是选中插入到ul列表的最前面。

删除按钮事件:点击删除按钮的事件是在把创建的li添加到ul中之后定义的。删除的操作主要是要弄清除是父节点元素删除子节点元素。在这里点击删除链接,删除的是当前被点击的按钮所在的li。li是删除连接的父节点元素。

分析永远比敲代码重要。要先分析,再去敲代码,实现需求。

先看效果图吧

默认是没有任何内容的

JS实现简易留言板(节点操作)

在文本域中输入,点击发布,可以发布留言,如果发完想删除,可以点击里面的删除按钮,删除留言

JS实现简易留言板(节点操作)

JS实现简易留言板(节点操作)

删除操作后: 

JS实现简易留言板(节点操作)

JS代码:

<script>
  // 点击发布,会把文本域中的内容发布到ul中
  // 点击删除,会删除留言
  // 1.获取事件源 文本域 按钮 文本域
  var text = document.querySelector('textarea');
  var btn = document.querySelector('button');
  var ul = document.querySelector('ul');
  // 2.注册点击事件
  btn.onclick = function () {
   // 首先会创建一个li 并把文本域的内容给li 再把li添加到ul中
   var li = document.createElement('li');
   if (text.value == '') {
    alert('您没有输入内容')
   } else {
    // 文本域的值 value
    // 增加一个删除留言的按钮
    li.innerHTML = text.value + '<a href="javascript:;" rel="external nofollow" rel="external nofollow" >删除</a>';
    ul.insertBefore(li, ul.children[0]); // 把最新的发布放到最前面
    // ul.appendChild(li);
 
    // 3.注册删除点击事件
    var removeBtn = document.querySelectorAll('a');
    for (var i = 0; i < removeBtn.length; i++) {
     removeBtn[i].onclick = function () {
      ul.removeChild(this.parentNode);
     }
    }
   }
  }
</script>

全部代码:

<!DOCTYPE html>
<html lang="en">
 
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>留言板</title>
 <style>
  * {
   margin: 0;
   padding: 0;
  }
 
  body {
   padding: 100px;
  }
 
  textarea {
   width: 200px;
   height: 100px;
   border: 1px solid pink;
   outline: none;
   resize: none;
  }
 
  ul {
   margin-top: 50px;
  }
 
  li {
   width: 300px;
   padding: 5px;
   background-color: rgb(245, 209, 243);
   color: red;
   font-size: 14px;
   margin: 15px 0;
  }
 
  li a {
   float: right;
  }
 </style>
</head>
 
<body>
 <textarea name="" id=""></textarea>
 <button>发布</button>
 <ul>
 
 </ul>
 <script>
  // 点击发布,会把文本域中的内容发布到ul中
  // 点击删除,会删除留言
  // 1.获取事件源 文本域 按钮 文本域
  var text = document.querySelector('textarea');
  var btn = document.querySelector('button');
  var ul = document.querySelector('ul');
  // 2.注册点击事件
  btn.onclick = function () {
   // 首先会创建一个li 并把文本域的内容给li 再把li添加到ul中
   var li = document.createElement('li');
   if (text.value == '') {
    alert('您没有输入内容')
   } else {
    // 文本域的值 value
    // 增加一个删除留言的按钮
    li.innerHTML = text.value + '<a href="javascript:;" rel="external nofollow" rel="external nofollow" >删除</a>';
    ul.insertBefore(li, ul.children[0]); // 把最新的发布放到最前面
    // ul.appendChild(li);
 
    // 3.注册删除点击事件
    var removeBtn = document.querySelectorAll('a');
    for (var i = 0; i < removeBtn.length; i++) {
     removeBtn[i].onclick = function () {
      ul.removeChild(this.parentNode);
     }
    }
   }
  }
 </script>
</body>
 
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
createElement动态创建HTML对象脚本代码
Nov 24 Javascript
JS与框架页的操作代码
Jan 17 Javascript
js实现的仿新浪微博完美的时间组件升级版
Dec 20 Javascript
jQuery中prevUntil()方法用法实例
Jan 08 Javascript
JavaScript实现列表分页功能特效
May 15 Javascript
基于Vue如何封装分页组件
Dec 16 Javascript
js select下拉联动 更具级联性!
Apr 17 Javascript
angular forEach方法遍历源码解读
Jan 25 Javascript
详谈js中标准for循环与foreach(for in)的区别
Nov 02 Javascript
JS排序算法之希尔排序与快速排序实现方法
Dec 12 Javascript
js实现文字头像的生成代码
Mar 07 Javascript
vue中element 的upload组件发送请求给后端操作
Sep 07 Javascript
JavaScript实现旋转木马轮播图
Mar 16 #Javascript
基于JavaScript实现贪吃蛇游戏
Mar 16 #Javascript
原生js实现的金山打字小游戏(实例代码详解)
Mar 16 #Javascript
JavaScript实现拖拽效果
Mar 16 #Javascript
js实现点赞效果
Mar 16 #Javascript
Javascript Web Worker使用过程解析
Mar 16 #Javascript
Javascript ParentNode和ChildNode接口原理解析
Mar 16 #Javascript
You might like
php读取html并截取字符串的简单代码
2009/11/30 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
功能强大的php分页函数
2016/07/20 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
基于jquery的$.ajax async使用
2011/10/19 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
jQuery实现径向动画菜单效果
2015/07/17 Javascript
JS判断元素是否在数组内的实现代码
2016/03/30 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
详解vue与后端数据交互(ajax):vue-resource
2017/03/16 Javascript
JS/jquery实现一个网页内同时调用多个倒计时的方法
2017/04/27 jQuery
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
python解析模块(ConfigParser)使用方法
2013/12/10 Python
Python sys.argv用法实例
2015/05/28 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
python递归实现快速排序
2018/08/18 Python
Python使用gRPC传输协议教程
2018/10/16 Python
python利用openpyxl拆分多个工作表的工作簿的方法
2019/09/27 Python
python批量生成条形码的示例
2020/10/10 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
移动端Web页面的CSS3 flex布局快速上手指南
2016/05/31 HTML / CSS
什么是命名空间(NameSpace)
2015/11/24 面试题
扬尘污染防治方案
2014/06/15 职场文书
副校长竞聘演讲稿
2014/09/01 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
销售经理工作失职检讨书
2014/10/24 职场文书
小学国庆节活动总结
2015/03/23 职场文书
2016年党员创先争优承诺书
2016/03/25 职场文书
MySQL 数据丢失排查案例
2021/05/08 MySQL
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers