用JavaScript写了一个简易的留言板,暂不涉及数据库接入等。

1.功能以及流程

主要功能即为留言,用两个文本框接受用户输入的用户名以及留言内容,然后通过“提交留言”按钮将用户名+留言发布到下方的留言列表区域。

2.页面样式设计

样式很简单,就不上代码了。

3.使用JS实现留言功能

代码:

function getMessage(){

var btn = document.getElementById("btn1"); //绑定发布按钮

var message = document.getElementById("message");

var name = document.getElementById("name");

var nameValue = "";

var messageValue = "";

btn.onclick = function(){

nameValue = name.value || "Lon"; //设置默认值

messageValue =  message.value || "http://www.cnblogs.com/lonhon/" ;

var msgList = document.getElementById("messageList");

var msgDiv = document.createElement("div");

msgDiv.className="msg";  //设置留言Div样式

var msgTxt = document.createTextNode(nameValue+"留言:"+messageValue);

msgDiv.appendChild(msgTxt);

msgList.appendChild(msgDiv);

}

}

function addLoadEvent(func)

{

var oldonload = window.onload; //得到上一个onload事件的函数

if(typeof window.onload != 'function')

{

window.onload = func;

}

else

{

window.onload = function()

{

oldonload(); //调用之前覆盖的onload事件的函数

func(); //调用当前事件函数

}

}

}

4.测试,首先不输入内容看是否有返回设置的默认值

这一步OK,返回去看JS中设置的默认值

5.测试,输入内容

总结,这个JS留言板设计的较为简陋,主要是练习JS操纵DOM节点,在本次中即为点击#btn1 下方列表则通过appendChild方法添加新DIV。

26行中,msgList绑定留言列表DIV,然后通过creatElement创建单个msgDiv,写入用户名和留言内容,再通过向父级msgList添加子节点的方式将msgDiv添加到留言列表,即实现了留言发布的功能。

加深了JS中一切皆为对象的理念,这也是面向对象编程的好处吧,能够很好的把控所操作的东西,比如上图中28行,向msgDiv添加css样式。下一步准备模仿腾讯微博的微博发布页面,实现相同的功能并加入新的元素比如时间、头像等。

JavaScript学习笔记(三)——留言板知操纵DOM节点的更多相关文章

  1. Javascript学习笔记三——操作DOM(二)

    Javascript学习笔记 在我的上一个博客讲了对于DOM的基本操作内容,这篇继续巩固一下对于DOM的更新,插入和删除的操作. 对于HTML解析的DOM树来说,我们肯定会时不时对其进行一些更改,在原 ...

  2. JavaScript学习笔记 - 进阶篇(8)- DOM对象,控制HTML元素

    认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面代码 ...

  3. JavaScript学习笔记 - 入门篇(3)- DOM操作

    认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面代码 ...

  4. JavaScript学习笔记(三)——this、原型、javascript面向对象

    一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...

  5. JavaScript学习笔记(三十八) 复制属性继承

    复制属性继承(Inheritance by Copying Properties) 让我们看一下另一个继承模式—复制属性继承(inheritance by copying properties).在这 ...

  6. ROS学习笔记三:编写第一个ROS节点程序

    在编写第一个ROS节点程序之前需要创建工作空间(workspace)和功能包(package).   1 创建工作空间(workspace) 创建一个catkin_ws: #注意:如果使用sudo一次 ...

  7. javascript学习笔记(四) Number 数字类型

    数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数  toExponential() 方法 用科学 ...

  8. JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别

    JavaScript:学习笔记(7)——VAR.LET.CONST三种变量声明的区别 ES2015(ES6)带来了许多闪亮的新功能,自2017年以来,许多JavaScript开发人员已经熟悉并开始使用 ...

  9. JavaScript学习记录三

    title: JavaScript学习记录三 toc: true date: 2018-09-14 23:51:22 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...

随机推荐

  1. Apache solr(二)

    上一篇试着进行了solr的安装和配置,以及如何solr的检索,今天试着简单的将solr连接MySQL数据库(才尝试了单表.一对多和多对多的还有待研究) 1.MySQL的目录结构 2.新建一个democ ...

  2. Linux-Zabbix 邮件报警设置

    系统环境 Ubuntu 16.04 在Zabbix服务器端 安装sendmail sudo apt install sendmail 测试发送邮件 echo "正文!" | mai ...

  3. 开涛spring3(12.3) - 零配置 之 12.3 注解实现Bean定义

    12.3  注解实现Bean定义 12.3.1  概述 前边介绍的Bean定义全是基于XML方式定义配置元数据,且在[12.2注解实现Bean依赖注入]一节中介绍了通过注解来减少配置数量,但并没有完全 ...

  4. java虚拟机学习-JVM调优总结-分代垃圾回收详述(9)

    为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的.因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率. 在Java程序运行的过程中,会产生大量的对象, ...

  5. Include promo/activity effect into the prediction (extended ARIMA model with R)

    I want to consider an approach of forecasting I really like and frequently use. It allows to include ...

  6. mongoose populate

    mongoose具备关系数据库一样的关联查询,通过在schema模型中设置ref属性,然后在查询时使用populate关键字,可以达到关联查询的目的. 以下内容参考了mongoose官方文档http: ...

  7. web前端面试集锦(自己搜集的,如有错误请不吝赐教)

    css 1 浏览器兼容性 CSS hack(针对IE6-,IE7,IE8,IE9以及其他浏览器) ‘ * ’ : 所有的IE浏览器都能识别 说明:在标准模式中 “-″减号是IE6专有的hack “\9 ...

  8. go服务端----使用dotweb框架搭建简易服务

    使用dotweb框架搭建简易服务 go语言web框架挺多的,所谓琳琅满目,里面也有很多优秀的,比如echo.beego等,但体验下来,总是觉得哪里有点小疙瘩,后来才明白过来,echo太简单,很多日常使 ...

  9. Python函数之简单总结

    函数的定义 Python的函数定义使用关键字def,如定义一个返回绝对值的函数my_abs def my_abs(x): if x>=0: return x else: return -x 函数 ...

  10. [附录]Discuz X2.5程序模块source功能处理目录注释

    /source/admincp后台管理 /source/admincp/cloud云平台项目 /source/admincp/menu后台扩展菜单目录 /source/admincp/moderate ...