【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节点树:

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、”替换节点内容“按钮,首先选择需要操作的节点,然后输入要替换的内容,就会替换相应的节点。

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

三、制作过程

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

<!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>
时间: 2024-10-29 19:13:23

【JavaScript】网页节点的增删改查的相关文章

【jQuery】对网页节点的增删改查

本文与<[JavaScript]网页节点的增删改查>(点击打开链接)为姊妹篇,其实JavaScript对DOM的操作已经总结了很久的,而对于jQuery对网页节点的操作,虽然一直在用,但一直没有好好总结一下,实在是不应该. 下面举同样的例子来说明这个问题: 如上图,提供3个按钮,1个下拉列表,1个输入框,提供增删改查的操作. 网页中最多10个节点,最少0个节点,多了不让加,少了不让减. 首先是本网页的基本布局: <!DOCTYPE HTML PUBLIC "-//W3C//DT

HTML DOM(二):节点的增删改查

上一篇讲述了DOM的基本知识,从其得知,在DOM眼中,HTML的每个成分都可以看作是节点(文档节点.元素节点.文本节点.属性节点.注释节点,其中,属性节点是属于元素节点),本篇的内容就是通过DOM对这些节点进行增删改查的操作. 获取(R) 1. getElementById(id).getElementsByName(name).getElementsByTagName(tagName),这三种方法都会忽略文档的结构. getElementById(id):通过id获取元素节点,如果页面上含有多

HTML DOM节点的增删改查

上篇博客中,我们已经初步接触了DOM基础,可是我们学习是为了可以更好地应用,今天我们就来看看DOM节点的增删改查. 无论在哪里,我们想要操作一个东西,总是应该先去获得它.那么我们怎么获得呢? HTML的每一个成分都能够看作是节点(文档节点.元素节点.文本节点.属性节点.凝视节点.当中,属性节点属于元素节点). W3C 提供了比較方便简单的定位节点的方法和属性,以便我们高速的对节点进行操作. 分别为:getElementById().getElementsByTagName().getElemen

【mfc】学生信息管理,实现List控件节点的增删改查

之前在mfc这个专栏里面,写了很多关于win32的程序, 其实也没什么的,win32是mfc的基础, mfc只是win32的扩展,系统自带的扩展,新建一个mfc如同新建一个win32程序,不过这个win32程序一开始就带了很多空函数框架. 一.基本目标 要建立如下图所示的学生信息管理mfc程序,当然这个程序以后应该考虑连接数据库,access,sql server都可以, 同时连同<[mfc]用对话框分页实现用户登录>(点击打开链接),让用户登录之后才能够管理信息,当然这是后话. 1.这个程序

JavaScript中数组的增删改查

                                           数组的增加 ary.push()   向数组末尾添加元素,返回的是添加后新数组的长度,原有数组改变 ary.unshift()  向数组开头添加元素,返回的是添加后新数组的长度,原有数组改变 var ary=[1,2,3,4]; var res=ary.unshift(6); console.log(res); ---->5 返回的是新数组的长度 ary.splice(n,m,x)从索引n开始删除m个元素,把新

【php】数据库的增删改查和php与javascript之间的交互

使用语言操作数据库是重中之重,如果一门语言你不懂得如何操作数据库,那么你还是没有学会这门语言. php操作数据库的方法并不难 同时php的值还可以与javascript脚本之间进行控制, 一般是php的值传递到javascript中,一般不会反过来操作 一.基本目标 首先,在mysql中有一张用户信息表user, 里面的字段分别是id,username与password, 打开网页dbselect.php,首先就用php查出整张user表: 然后,插入数据的一栏,输入数据,就可把数据插入到mys

【ActionScript】ActionScript3.0对舞台组件的增删改查

以一个例子来说明ActionScript3.0对舞台组件的增删改查 如下图: 在Flash运行的时候,通过脚本,斜向下生成text0-text9十个文本节点. 提供两个功能, 1.在右上角,用户输入要删除的节点,点击"删除"之后,而删除相应的文本节点. 2.在下方,用户输入要移动的节点,然后输入合法的X与Y,则可以把节点移动到相应的地方. 一.基本布局 1.首先新建一个ActionScript3.0的Flash文件.之后如同<[ActionScript]ActionScript3

【Visual Basic】列表控件ListView的增删改查、模态对话框、禁止窗口调整大小

列表控件ListView是窗体中核心组件之一,在各种窗体程序得到广泛应用.在<[mfc]学生信息管理,实现List控件节点的增删改查>(点击打开链接)中极其难以实现列表控件ListView的增删改查,在vb中可以轻松实现,下面举一个列子来说明这个问题. 如上图的一个ListView控件,点击"添加"按钮,在弹出的模态窗口,可以为ListView控件添加相应的项. 通过"删除"按钮可以删除选中的项.通过"修改"按钮,选中的项的值将会传递

javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行

jsp页面表格布局Html代码 <body > <center> <input type="text" value="111" id="mytext"> <table border="1" width="60%" id="mytable"> <tr> <td id="td1">第一行第一列<