今天学习JavaScriptDOM加强,javascript灵活性大家都知道。但我们学习的只是使用JavaScript
对页面的操作,为学习AJAX打下基础。
JavaScriptDOM对页面的直接操作,使用户的体验更加舒畅。再加上CSS的装饰,那简直太完美了!JavaScriptDOM的使用并不复杂,相比那些专业搞JavaScript开发简单的多。下面我整理一下今日的学习内容。
一、DOM(DocumentObjectModel)
D:html、xml文档
O:document对象的属性和方法,它是核心对象,代表整个页面。
M:模型
DOM树这个东西,很多培训机构都有讲,看来他是一个经典!(用老佟的)
把上面的图片旋转180度,你就会看到一棵树。
二、节点及其类型
这个是重点,一定要牢记,首先知道了DOM,DOM下面就是这些。把框架记住了,使用JavaScriptDOM那就容易了。
1.节点分为三种类型:
1).元素节点
2).属性节点
3).文本节点
例如“<a href=”http://www.itcast.com.cn”>传智播客</a>”,“<a></a>”是元素节点,“href”是属性节点,“传智播客”是文本节点。Html和xml就不是这些节点相互套用吗!
三、属性和方法
1.查找节点:
document.getElementById(Id);:根据指定的ID属性值返回元素节点,Id是全局唯一的。如果不存在返回null。
document.getElementsByName(name);:根据指定的name属性值,返回所有的元素节点。返回一个数组集合,可以调用它的length查看它的数量。
node.hasChildNodes();查看元素节点是否有子节点,有返回true,无返回false。对属性节点和文本节点无效。
2.节点属性:
node.nodeName;返回节点的名称,只读属性。
node.nodeType;返回节点的类型,只读属性。返回1是元素节点,返回2是属性节点,返回3是文本节点。
node.nodeValue;返回或设置节点的值,读/写属性。对元素节点无效。
node.parentNode;返回节点的父节点,只读属性。
node.childNodes;返回节点的所有子节点,是一个数组集合,只读属性。
node.firstChild;返回节点的第一个子节点,只读属性。
node.lastChile;返回节点的最后一个子节点,只读属性。
node.nextSibling;返回节点的下一个兄弟节点,只读属性。
node.previousSibling;返回节点的前一个兄弟节点,只读属性。
node.innerHTML; 浏览器几乎都支持该属性,但不是 DOM 标准的组成部分。用来读\写某给定元素里的 HTML内容。
3.节点方法:
paraentNode.replaceChild(newChildNode, oldChildNode);替换节点,返回被替换节点的指针。如果新节点有子节点,也将被插入。
node.getAttribute(attributeName);返回节点属性值,如果不存在名称为attributeName的属性,返回空字符串。
node.setAttribute(attributeName, attributeValue);设置节点属性值。
document.createElement(nodeName);创建元素节点。
document.createTextNode(nodeName) ;创建一个文本节点。
node.appendChild(newNode);追加一个子节点。
node.insertBefore(newNode, targetNode);向targetNode节点前插入一个新节点。
整体上内容就这么多,不过今天还有三个练习。上边的内容看起来简单,但实际应用中并没那么容易。这也许就是JavaScript吧!——看着简单,用起来十分难!
4.练习:
1).在一个下拉列表框中选择省份,在另一个下拉列表框中显示对应的城市。
省份与城市的数据保存在xml文件中,在此只列出关键JavaScript代码。
Javascript:
window.onload = function(){
var province = document.getElementById("province");
// 设置<select id="province">的被改变事件
province.onchange = function(){
//----- 每次选择省份时,要清空<select id="province">下的原有城市 -----
var selectCity = document.getElementById("city");
var oldcities = selectCity.childNodes;
// 要保留“请选择...”,所以从1开始
var len = oldcities.length-1;
for(var i=1; i<len;i++){
selectCity.removeChild(selectCity.lastChild);
}
//----- 获取城市并显示 ------
// 获取当前省份
var province = this.value;
if(province != ""){
// 加载XML文件
var cityDoc = parseXml("cities.xml");
// 查找指定省份节点
var provinces = cityDoc.getElementsByTagName("province");
var provinceNode = null;
for(var i=0; i < provinces.length; i++){
if(provinces[i].getAttribute("name") == province){
provinceNode = provinces[i];
break;
}
}
// 获取对应省份的所有城市
var cities = provinceNode.childNodes;
// 包装城市,插入到<select id="city">中
for(var i=0; i<cities.length;i++){
if (cities[i].hasChildNodes()) {
// 创建option元素节点
var optionNode = document.createElement("option");
// 创建文本节点
var textNode = document.createTextNode(cities[i].firstChild.nodeValue);
// 将文本节点添加到option元素节点
optionNode.appendChild(textNode);
// 将option元素节点添加到select元素节点中
selectCity.appendChild(optionNode);
}
}
}
}
}
|
2).添加和删除联系人,并在当前页面动态显示联系人信息。
window.onload = function(){
//------------ 添加联系人 ---------------
//获取提交按钮
var sbumitform = document.getElementById("submit");
//设置提交事件
sbumitform.onclick = function(){
// 获取提交的联系人信息
var name = document.getElementById("name").value;
var phone = document.getElementById("phone").value;
var address = document.getElementById("address").value;
// 人名不能为空,如果空则返回并提示。使用正则表达式替换。
var reg = /^\s*|\s*$/gi;
name = name.replace(reg, "");
if(name == ""){
alert("请输入姓名!");
return false;
}
//创建表格中的<tr>节点
var trNode = document.createElement("tr");
//创建表格中的<td>节点,并将信息添加进去
var tdNameNode = document.createElement("td");
tdNameNode.appendChild(document.createTextNode(name));
var tdPhoneNode = document.createElement("td");
tdPhoneNode.appendChild(document.createTextNode(phone));
var tdAddressNode = document.createElement("td");
tdAddressNode.appendChild(document.createTextNode(address));
var tdDeleteNode = document.createElement("td");
var aNode = document.createElement("a");
aNode.setAttribute("href","/delete?id=");
aNode.appendChild(document.createTextNode("delete"));
tdDeleteNode.appendChild(aNode);
//将td添加到tr中
trNode.appendChild(tdNameNode);
trNode.appendChild(tdPhoneNode);
trNode.appendChild(tdAddressNode);
//将tr添加到table中
document.getElementById("contacters").appendChild(trNode);
return false;
}
//------------ 删除系人 ---------------
// 获取所有font-size: 10pt; background: white; color: green;
分享到:
Global site tag (gtag.js) - Google Analytics
|
相关推荐
传智播客——JPA学习笔记 网络上有一份pdf格式的《JPA学习笔记》,但是内容排版有点乱,而且有缺失的部分,小弟从原来的blog处拷贝出来,并加以排版,制作成了chm格式的,大家应该知道chm格式比较适合作为参考资料或...
### 一、传智播客资源分享方式 #### 1. 下载工具推荐与安装 - **工具名称**:115网盘客户端 - **下载地址**:http://xiazai.xiazaiba.com/UDown/UDown_1.2.42.102.exe - **功能介绍**:这是一个专门用于管理和下载...
WPF基础视频教程(第三季)-传智播客 杨中科 WPF基础视频教程(第三季)-传智播客 杨中科
2017年-传智播客-张志君老师-SpringBoot视频教程 网上找了好久才找到的
javascript加强--传智播客--蔡世友
传智播客内部培训javascript的讲解。深入透彻。
javascript面向对象编程--传智播客--蔡世友
传智播客黑马python东哥主讲,这里是代码和课件。视频见:https://www.bilibili.com/video/av36851082/?p=129
《传智播客成都中心蔡世友JavaScript面向对象及ExtJS基础教程》2.79G 《2010传智播客struts2.1.8视频教程》1.09G 《EJB3.0视频教程》180M 《JDBC视频教程》664M 《jpa详解视频教程》165M 《spring2.5视频教程》365M ...
QT教程文档——传智播客 Qt是一款强大的跨平台C++开发框架,专为构建具有艺术级别的图形用户界面(GUI)应用而设计。Qt库提供了丰富的API,支持多种操作系统,如Windows、Linux、macOS、Android以及iOS,使得开发者...
传智播客(BOM DOM)java基础
稀有的传智播客24期(最后一期)无加密.net就业班视频 价值上万
javaWeb传智播客网上书城项目源码(设计以及实现论文).zipjavaWeb传智播客网上书城项目源码(设计以及实现论文).zipjavaWeb传智播客网上书城项目源码(设计以及实现论文).zipjavaWeb传智播客网上书城项目源码(设计以及...
Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程,实现了全栈JavaScript开发的可能性。以下是基于提供的压缩包文件名的详细知识点讲解: 1. **分页 - NodeJS**:...
标题“传智播客2016spring资料4”揭示了这是一份关于Spring框架的教育资料,特别关注的是2016年传智播客教学课程中的第四天内容。传智播客是一家知名的IT教育机构,其课程通常深入浅出,适合初学者和有一定经验的...
传智播客vip课程的讲义 适合自学c++的人预习和复习---------------------------------------------------------------------------------------------------------------------------------------------------------...
传智播客视频第24期全部视频。 另外的那个选少了,这个是最全的视频,什么都有,放心下载。
标题中的“传智播客课件笔记集合”指的是一个综合性的学习资源包,包含了传智播客教育机构的多个课程资料。传智播客是一家知名的IT培训机构,专注于提供高质量的编程和技术培训,其课程覆盖了从基础到高级的各类IT...
"传智播客JavaScript L6"教程是这个系列的第六部分,通常涵盖了一些进阶主题,旨在帮助学习者深化对JavaScript的理解。 在这个阶段的学习中,你可能会接触到以下几个关键知识点: 1. **闭包(Closures)**:闭包是...
传智播客JavaScriptL4----JAVA