java dom no protocol_DOM
DOM
DOM:Document Object Model(文档对象模型)
用来将标记型文档封装成对象,并将标记型文档中的所有的内容(标签,文本,属性等)都封装成对象。封装成对象的目的是为了更方便操作这些文档中的所有内容,因为对象的出现可以有属性和行为被调用
文档:标记型文档
对象:封装了属性和行为的实例,可以直接被调用
模型:所有标记型文档都具备一些共性特征的一个体现
只要是标记型文档,DOM这种技术都可以对其进行操作,常见的标记型文档:(HTML、XML)要操作标记型文档必须对其进行解析
DOM技术的解析方式:dom解析将按照标签的层次关系体现出标签的所属,形成一个树状结构,称为DOM树,树中的标签以及文本甚至属性称为节点,这个节点也成为对象,标签通常也称为页面中的元素。
好处:可以对树中的节点进行任意操作,比如:增删改查
弊端:这种解析需要将整个标记型文档加载进内存
DOM解析文档.png
简介另一种解析方式:SAX:是由一些组织定义的一种民间常用的解析方式,并不是w3c标准,而DOM是w3c的标准
SAX解析方式:基于事件驱动的解析
好处:获取速度非常快
弊端:无法进行增删改
如果仅仅只是查询,可以使用SAX
DOM的三层模型
DOM level 1:将html文档封装成对象
DOM level 2:在level 1基础上加入了新功能,比如解析名称空间(可以使用域名来标识)
DOM level 3:将xml文档封装成对象
DHTML
动态的html,不是一门语言:是多项技术综合体的简称(HTML,CSS,JavaScript,DOM)
HTML:负责提供标签,对数据进行封装,目的是便于对该标签中的数据进行操作
简述:用标签封装数据
CSS:负责提供样式属性,对标签中的数据进行样式的定义
简述:对数据进行样式定义
DOM:负责将标签型文档以及文档中的所有内容进行解析,并封装成对象,在对象中定义了更多的属性和行为,便于对对象操作
简述:将文档和标签及其他内容变成对象
JavaScript:负责提供程序设计语言,对页面中的对象进行逻辑操作
简述:页面的行为定义,页面的动态效果,是动态效果的主力编程语言
DHTML + XMLhttpRequest = AJAX
BOM模型
BOM:Browser Object Model(浏览器对象模型)这个模型方便操作浏览器
浏览器对应的对象就是window对象,可以通过查阅DHTML api获得
function windowDemo(){
// 获取浏览器信息navigator
var name = window.navigator.appName;
var version = navigator.appVersion; // window可以省略
document.write(name + ":" + version);
}
function windowDemo1(){
// 演示地址栏 location
var pro = location.protocol; // file
var text = location.href; // file:///E:/demo.html
// 给location的href属性设置一个值。改变了地址栏的值,并对其进行了解析,如果是http,还进行连接访问
location.href = "http://www.baidu.com";
document.write(pro);
}
function windowDemo2(){
// 确认点击弹窗
var b = confirm("are you sure onClick!");
alert(b);
// 设置闹钟
var id = setTimeout("alert('time run')", 4000); // 4s后执行
var id1 = setInterval("alert('Interval run')", 3000); // 每3s执行一次
clearInterval(id1);
clearTimeout(id);
}
function windowMove(){
moveBy(10,10); // 每次点击,窗口移动x = 10, y = 10
moveTo(40,50); // 移动到指定位置
}
function windowOnunload(){
onunload = function(){ // 3
alert("unload run");
}
onload = function(){ // 1
alert("load run");
window.status = "a load is finish"
}
onbeforeunload = function(){ // 2
alert("before unload run");
}
}
练习:广告弹窗
test
/**
* 弹窗广告效果,页面一加载完就执行
*/
onload = function(){
open("./AD.html", "_blank","height = 300, width = 400, status = no, toolbar = no, location = no");
}
// 一分钟获取一次焦点
setInterval("focus()", 1000);
Document对象
该对象将标记型文档进行封装,该对象的作用,是对可以标记型文档进行操作
最常见的操作:想要实现动态效果,需要对节点操作,那么要先获取到这个节点。要想获取节点,就必须先要获取到节点所属的文档对象document
获取节点的方法体现
getElementById():通过标签的id属性值,获取该标签节点。返回该标签节点
getElementsByName():通过标签的name属性,获取该节点。因为name有相同,返回该节点数组
getElementsByTagName():通过标签名,获取该标签节点。因为标签名会重复,返回该标签数组
凡是带s返回的都是数组
常见节点有三种:
标签节点:类型 1
属性节点:类型 2
文本节点:类型 3
标签型节点是没有值的,属性和文本节点是可以有值的
document
百度
百度1
百度2
百度
百度1
百度2
function getNodeDemo(){
var hhNode = document.getElementById("hh");
console.log(hhNode.nodeName + hhNode.nodeType + hhNode.nodeValue);
// 获取div中的文本
var text = hhNode.innerHTML; // 11111111111111111
// 修改div中的文本
hhNode.innerHTML = "hhhhhhhhhhhhhhh".fontcolor("red");
---------------------------------------------------------------------------
var nodes = document.getElementsByName("user");
console.log(nodes[0].type + nodes[0].value); // text 文本框写啥拿啥
var userNode = document.getElementsByName("user")[0]; // 须保证name = user 只有唯一一个
---------------------------------------------------------------------------
var aNode = document.getElementsByTagName("a");
console.log(aNode[0].innerHTML);
// 给所有超链接设置新窗口打开
for(var i = 0; i < aNode.length; i++){
aNode[i].target = "_blank";
}
// 给部分超链接设置打开新窗口
var newNode = document.getElementById("news");
var newArrNode = newNode.getElementsByTagName("a");
for(var i = 0; i < newArrNode.length; i++){
newArrNode[i].target = "_blank";
}
}
通过节点的层次关系获取节点
父节点:parentNode对应一个节点对象
子节点:childNodes对应一个节点集合,只包含下一层子节点,没有孙子节点
兄弟节点:尽量少用兄弟节点,
上一个兄弟节点:previousSibling
下一个兄弟节点:nextSibling
title
d1 | d2 |
- updown
function getNodeByLevel(){
// 获取页面中的表格节点
var tableNode = document.getElementById("table");
// 获取父节点
var pNode = tableNode.parentNode; // body节点
// 获取子节点
var cNode = tableNode.childNodes; // tbody
// 获取孙子
var cNode = cNode[0].childNodes[0].nodeName; // tr
}
节点操作
创建并添加
删除
修改
// 增
function creatAndAdd(){
// 1.创建文本节点/按钮节点
var text = document.createTextNode("这是一个新节点")
var botton = document.createElement("input");
botton.type = "botton";
botton.value = "click";
// 2.获取1节点
var div1Node = document.getElementById("1");
// 3.添加到1节点中
div1Node.appendChild(text);
div1Node.appendChild(botton);
}
function creatAndAdd1(){
var div1Node = document.getElementById("1");
div1Node.innerHTML = "hahahahaha";
div1Node.innerHTML = "";
}
// 删
function del(){
// 获取2节点
var div2Node = document.getElementById("2");
// 删除2节点
div2Node.removeNode(false); // true:递归删除节点下所有内容 该方法较少使用
// 一般使用removeChild方法
div2Node.parentNode.removeChild(div2Node);
}
// 改
function update(){
// 获取1,3节点
var div1Node = document.getElementById("1");
var div3Node = document.getElementById("3");
// 用3替换1节点
// div1Node.replaceNode(div3Node); // 该操作会把原来的3搬到1位置上,3位置消失
div1Node.parentNode.replaceChild(div3Node,div1Node);
// 3不动,复制一份到1上
var div3Copy = div3Node.cloneNode(true); // true:递归克隆节点下所有内容 该方法较少使用
div1Node.parentNode.replaceChild(div3Copy,div1Node);
}
核心DOM模型
Document:文档对象
创建(获取):在HTML DOM模型中可以使用window对象来获取
window.document
document
方法:
获取Element对象:
getElementById():查找具有指定的唯一id的元素,id属性一般唯一
getElementsByTagName():根据元素名称获取元素对象集合,返回数组
getElementsByClassName():根据Class属性值获取元素对象集合,返回数组
getElementsByName():根据name属性值获取元素对象集合,返回数组
创建其他DOM对象:
属性
Element:元素对象
获取/创建:通过document来获取和创建
方法:
removeAttribute():删除属性
setAttribute()
Node:节点对象,其他5个的父对象
java dom no protocol_DOM相关推荐
- java dom cdata_java – 通过DOM解析器从XML处理CDATA
我以前从未处理过XML,所以我不确定如何在XML文件中处理CDATA.我迷失在节点,父节点,子节点,nList等中. 谁能告诉我这些代码片段的问题是什么? 我的getTagValue()方法适用于除& ...
- java w3c xml_org.w3c.dom(java dom)解析XML文档
首先来了解点Java DOM 的 API: 1.解析器工厂类:DocumentBuilderFactory 创建的方法:DocumentBuilderFactory dbf = DocumentBui ...
- java dom xml解析和windows dom解析的差别
1.java dom 子节点包括空节点. 2.java dom 文档节点值也是其的子节点. 而windows dom(mshtml.dll)子节点不包括空节点,而节点值也不是以子节点的方式来对待的.
- JAVA:DOM解析XML和修改XML
JAVA:DOM解析XML和修改XML 一:工程结构: 二:类:XMLPARSER package com.demo.xml;import javax.xml.parsers.DocumentBuil ...
- java dom获取命名空间属性_Java DOM XML解析::获取元素属性值
如何从元素中提取属性值.我的xml节点是这样写的 < nodename attribute ="value">我需要将其解压缩以将其与另一个字符串进行比较. 但由 ...
- java dom 解析xml 例子,Java DOM解析XML的幾個例子
Sample1: 1:新建XML文檔 books.xml,放到項目的根目錄下. xmlns="http://test.org/books"> Thinking in JAVA ...
- Java Dom解析xml
Dom解析是将xml文件全部载入,组装成一颗dom树,然后通过节点以及节点之间的关系来解析xml文件,下面结合这个xml文件来进行dom解析. Xml代码 <?xml version=&quo ...
- java dom添加节点_java用dom更新xml的有关问题,如何在子节点上添加节点
java用dom更新xml的问题,怎么在子节点下添加节点? 有原始xml如下: 我想要得到修改后的结果为: 我的代码为: public static void main(String[] args) ...
- java dom创建xml文件_Java 如何使用dom方式读取和创建xml文件
Java 如何使用dom方式读取和创建xml文件 发布时间:2020-11-11 17:08:31 来源:亿速云 阅读:101 作者:Leah 本篇文章给大家分享的是有关Java 如何使用dom方式读 ...
最新文章
- 【蓝桥java】递归基础之39级台阶
- java线程callback,Java线程之异步回调(Callback)
- Java算法测试的输入模板
- System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本?
- 未对销售组织 XXX 分销渠道 00 语言 ZH 定义
- 【算法】设计算法求所有强连通分量的完整代码(kosaraju算法)
- 如何设定vs2012用linux文件格式,Visual Studio 2012发布网站详细步骤
- WebDriver API元素的定位
- java zip文件夹_如何使用java压缩文件夹成为zip包
- webserver之处理HTTP请求
- Android系统(237)---OTA升级基本信息介绍
- mysql语句怎么替换_mysql怎么批量替换sql语句
- java bytebuffer读取_Java NIO学习笔记之二-图解ByteBuffer
- spreadJs实现基本的表格编辑 导入导出
- flashfxp连接centos7失败原因之一
- 计算机打不开网络邻居,打不开网上邻居的电脑是怎么回事
- 自己做网站需要考虑的问题
- 浅谈C++11中的move和forward
- 我觉得贝叶斯统计是必修课!!!
- JAVA编写程序实现,由键盘输入两个整数,输出其中较大的数。
热门文章
- 机器学习的练功心法(二)——引入
- 使用@Autowired注解警告Field injection is not recommended
- JS遍历对象或者数组
- Vmware提示:the operation was canceled by the user
- 轻松访问 Android 系统源码与下载
- epoll为什么比select和poll效率更高
- [react] React怎么判断什么时候重新渲染组件呢
- 前端学习(3190):react简介二
- [vue] 你有使用过babel-polyfill模块吗?主要是用来做什么的?
- [css] 如何使用CSS绘制一个汉堡式菜单