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 相关文章推荐
说说JSON和JSONP 也许你会豁然开朗
Sep 02 Javascript
javascript搜索框效果实现方法
May 14 Javascript
js实现的早期滑动门菜单效果代码
Aug 27 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
Oct 30 Javascript
Javascript中的几种继承方式对比分析
Mar 22 Javascript
bootstrap导航条实现代码
Dec 28 Javascript
Vue.js 插件开发详解
Mar 29 Javascript
Vue 组件间的样式冲突污染
Aug 31 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
Sep 13 Javascript
Vue SPA单页应用首屏优化实践
Jun 28 Javascript
vue 内联样式style中的background用法说明
Aug 05 Javascript
Vue Mint UI mt-swipe的使用方式
Jun 05 Vue.js
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一些服务器端特性的配置加强php的安全
2006/10/09 PHP
由php的call_user_func传reference引发的思考
2010/07/23 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
PHP vsprintf()函数格式化字符串操作原理解析
2020/07/14 PHP
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
jQuery表格插件ParamQuery简单使用方法示例
2013/12/05 Javascript
深入理解JQuery keyUp和keyDown的区别
2013/12/12 Javascript
jQuery中on()方法用法实例详解
2015/02/06 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
微信小程序实现左滑修改、删除功能
2020/10/19 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
vue实现设置载入动画和初始化页面动画效果
2019/10/28 Javascript
VUE中使用HTTP库Axios方法详解
2020/02/05 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
Python常用小技巧总结
2015/06/01 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
关于Python 3中print函数的换行详解
2017/08/08 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
2020/03/02 Python
基于python检查矩阵计算结果
2020/05/21 Python
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
荷兰在线钓鱼商店:Raven
2019/06/26 全球购物
工作中个人的自我评价
2013/12/31 职场文书
五一手机促销方案
2014/03/08 职场文书
房务中心文员岗位职责
2014/04/16 职场文书
cf战队收人口号
2014/06/21 职场文书
四风专项整治工作情况汇报
2014/10/28 职场文书
个人工作保证书
2015/02/28 职场文书
《搭石》教学反思
2016/02/18 职场文书
创业计划书之家政服务
2019/09/18 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
Golang map映射的用法
2022/04/22 Golang