JavaScript针对网页节点的增删改查用法实例


Posted in Javascript onFebruary 02, 2015

本文实例讲述了JavaScript针对网页节点的增删改查用法。分享给大家供大家参考。具体分析如下:

一、基本概念

这部分也就是所谓的“HTML DOM”,所谓HTML DOM也就是Web页面加载规则,是一个规则,也就是网页组成的基本公式。

也就是所有网页都必须按照:<html><body></body></html>……的规则编写,也按照这样的规则加载。

所谓的“网页节点”,也叫“DOM节点”的通俗解释,例如html节点下的内容就是<html></html>之间所有内容,body节点下的内容就是<body></body>之间的所有内容。

HTML DOM是这样规定的:1、整个文档是一个文档节点;2、每个 HTML 标签(意指<body><table>等html标签,而不是单纯的<html>标签)是一个元素节点;3、包含在 HTML 元素中的文本是文本节点;4、每一个 HTML 属性是一个属性节点
譬如,可以把某个页面画成如下的DOM节点树:

JavaScript针对网页节点的增删改查用法实例

HTML DOM的官方定义如下:HTML DOM是HTML Document Object Model(文档对象模型)的缩写,HTML DOM则是专门适用与HTML/XHTML的文档对象模型。熟悉软件开发的人员可以将HTML DOM理解为网页的API。它将网页中的各个元素都看作一个个对象,从而使网页中的元素也可以被计算机语言获取或者编辑。 例如Javascript就可以利用HTML DOM动态的修改网页。

而使用JavaScript能轻松对于这些DOM节点进行网页节点的增删改查的控制。

二、基本目标

使用JavaScript对网页的节点进行增删改查的操作。在一个网页中有:

1、”增加节点“按钮,此按钮在增加节点的同时,增加与”替换按钮“相关联的下拉菜单中的节点选项。如果网页中存在着9个节点,则不让添加并弹窗警告。

2、”删除最后一个节点“按钮,此按钮在减少节点的同时,减少与”替换按钮“相关联的下拉菜单中的节点选项。

3、”替换节点内容“按钮,首先选择需要操作的节点,然后输入要替换的内容,就会替换相应的节点。

JavaScript针对网页节点的增删改查用法实例

4、如果网页中没有任何节点,则不让删除与替换,并弹窗警告。

JavaScript针对网页节点的增删改查用法实例

三、制作过程

不用配置任何环境,直接在网页中写入如下代码,具体代码如下,下面再一部分一部分进行说明:

<!DOCTYPE html PUBLIC "-//W3C//pD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/pD/xhtml1-transitional.dtd">  

<html xmlns="http://www.w3.org/1999/xhtml">  

    <head>  

        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  

        <title>jsdivnode</title>  

<script type="text/javascript">  

var i = 0;  

  

function createnode() {  

    if (i < 9) {  

        i++;  

        var option = document.createElement("option");  

        option.value = i;  

        option.innerHTML = "Node" + i.toString();  

        document.getElementById("number").appendChild(option);  

  

        var p = document.createElement("p");  

        p.innerHTML = "Node" + i.toString();  

        document.getElementById("d").appendChild(p);  

    } else  

        alert("爷行行好了,太多节点,臣妾做不到啊~");  

}  

  

function removenode() {  

    if (i > 0) {  

        i--;  

        var s = document.getElementById("number");  

        s.removeChild(s.lastChild);  

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

        d.removeChild(d.lastChild);  

    } else  

        alert("没有节点,删个毛线啊~");  

  

    /*var ps = d.getElementsByTagName("p");*/  

    /*document.getElementById("d").removeChild(ps[9]); */  

}  

  

function replacenode() {  

    if (i > 0) {  

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

        var p = document.createElement("p");  

        p.innerHTML = document.getElementById("text").value;  

        var ps = d.getElementsByTagName("p")  

        d.replaceChild(p, ps[document.getElementById("number").value - 1]);  

    } else  

        alert("没有节点,替换个毛线啊~");  

}  

</script>  

    </head>  

  

    <body>  

        <input type="button" value="创建节点" onclick="createnode()" />  

        <input type="button" value="删除最后一个节点" onclick="removenode()" />  

        <select id="number"></select>  

        <input type="text" id="text" />  

        <input type="button" value="替换节点内容" onclick="replacenode()" />  

        <div id="d">  

        </div>  

    </body>  

</html>

1、<body>节点

<body>  

    <!--按钮x2,此两个按钮都有onclick动作指向相应的函数-->  

    <input type="button" value="创建节点" onclick="createnode()" />  

    <input type="button" value="删除最后一个节点" onclick="removenode()" />  

       <!--一个没有<option>子节点的下拉菜单,由createnode()节点的同时,同时添加。-->  

    <select id="number"></select>  

       <!--输入框x1,注意设置好id,replacenode()要取这个文本框的值-->  

    <input type="text" id="text" />  

       <!--按钮x1,同上面的按钮x2-->  

    <input type="button" value="替换节点内容" onclick="replacenode()" />  

       <!--一个什么都没有的空图层,作为<p>的父节点,添加的<p>皆是此<div>节点的子节点-->  

    <div id="d">  

    </div>  

</body>

2、<head>节点

<head>  

    <!--网页使用的编码、标题,这不重要,关键是下面的js脚本部分-->  

        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  

        <title>jsdivnode</title>  

<script type="text/javascript">  

/*记录了当前网页有多少个节点的全局变量*/  

var i = 0;  

/*下方有3个函数。当按钮被点击时候则被调用*/  

function createnode() {  

    /*如果网页中的节点少于9个,才工作,否则弹窗*/  

    if (i < 9) {  

        /*每多加一个节点,记录了当前网页有多少个节点的全局变量i+1*/  

        i++;  

        /*创建option节点,然后其指针名字也叫option*/  

        var option = document.createElement("option");  

        /*声明创建的option节点的value属性为当前i的值,也就是当i=1时,有<option value=1></option>这样的子节点了。*/  

        /*部分网页说用setAttribute()方法去设置属性,亲自实践发现并不好用*/  

        option.value = i;  

        /*设置option节点下面的文本,此语句过后,子节点变为<option value=1>Node1</option>*/  

        option.innerHTML = "Node" + i.toString();  

        /*<select>父节点的ID是number,此语句要求在在<select></select>父节点下增加<option value=1>Node1</option>*/  

        document.getElementById("number").appendChild(option);  

          

        /*道理与上面同,在<div>父节点下增加<p>子节点,且<p>子节点下的文本值为Node1*/  

        var p = document.createElement("p");  

        p.innerHTML = "Node" + i.toString();  

        document.getElementById("d").appendChild(p);  

    } else  

        alert("爷行行好了,太多节点,臣妾做不到啊~");  

}  

  

function removenode() {  

    /*如果网页中的节点多于0个,也就是存在节点,才工作,否则弹窗*/  

    if (i > 0) {  

        /*每减少一个节点,记录了当前网页有多少个节点的全局变量i-1*/  

        i--;  

        /*定义指向<select>父节点的指针s*/  

        var s = document.getElementById("number");  

        /*删除<select>父节点旗下的最后一个子节点,也就是<option>,如果你要删第一个则参数变为s.firstChild*/  

        s.removeChild(s.lastChild);  

          

        /*道理同上,删除<div>图层下的最后一个子节点*/  

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

        d.removeChild(d.lastChild);  

        /*如果你要删除<div>下的第8个<p>请如下操作*/      

        /*ps是指向<p>子节点集的指针*/  

        /*var ps = d.getElementsByTagName("p");*/  

        /*document.getElementById("d").removeChild(ps[9]); */  

          

    } else  

        alert("没有节点,删个毛线啊~");  

}  

  

function replacenode() {  

    /*如果网页中的节点多于0个,也就是存在节点,才工作,否则弹窗*/  

    if (i > 0) {  

        /*定义指向<div>父节点的指针d*/  

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

        /*创建一个<p></p>节点*/  

        var p = document.createElement("p");  

        /*拿到文本框所输入的东西,放到<p></p>节点里面*/  

        p.innerHTML = document.getElementById("text").value;  

        /*ps是指向<div>父节点下的<p>子节点集、子节点群的指针*/  

        var ps = d.getElementsByTagName("p")  

        /*让刚刚创建的节点替换<div>下的第n个<p>子节点,其中n是现在下拉列表所选择的值-1,之所以要-1,是因为子节点集、子节点群的计数是从0开始的,而我们人的计数是从1开始的。*/  

        d.replaceChild(p, ps[document.getElementById("number").value - 1]);  

    } else  

        alert("没有节点,替换个毛线啊~");  

}  

</script>  

</head>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
Jul 09 Javascript
javascript date格式化示例
Sep 25 Javascript
jquery.cookie用法详细解析
Dec 18 Javascript
node.js中的fs.futimes方法使用说明
Dec 17 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
Sep 10 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
Dec 23 Javascript
巧用weui.topTips验证数据的实例
Apr 17 Javascript
Vue 中的compile操作方法
Feb 26 Javascript
一种angular的方法级的缓存注解(装饰器)
Mar 13 Javascript
关于Vue组件库开发详析
Jul 01 Javascript
利用es6 new.target来对模拟抽象类的方法
May 10 Javascript
vue中的可拖拽宽度div的实现示例
Apr 08 Vue.js
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
Feb 02 #Javascript
jQuery循环动画与获取组件尺寸的方法
Feb 02 #Javascript
基于jQuery实现最基本的淡入淡出效果实例
Feb 02 #Javascript
JavaScript对数字的判断与处理实例分析
Feb 02 #Javascript
JavaScript组件焦点与页内锚点间传值的方法
Feb 02 #Javascript
JavaScript分秒倒计时器实现方法
Feb 02 #Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
Feb 02 #Javascript
You might like
如何使用PHP中的字符串函数
2006/11/24 PHP
php数据入库前清理 注意php intval与mysql的int取值范围不同
2010/12/12 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
js window.print实现打印特定控件或内容
2013/09/16 Javascript
NodeJS url验证(url-valid)的使用方法
2013/11/18 NodeJs
纯javascript实现图片延时加载方法
2015/08/21 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
使用localStorage替代cookie做本地存储
2019/09/25 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
[01:13:51]TNC vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
Python SQLAlchemy入门教程(基本用法)
2019/11/11 Python
Django中的session用法详解
2020/03/09 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
django rest framework serializers序列化实例
2020/05/13 Python
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
size?荷兰官方网站:英国高级运动鞋精品店
2020/07/24 全球购物
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
新闻专业毕业生英文求职信
2014/03/19 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
军训后的感想
2015/08/07 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python