JavaScript学习笔记之DOM基础用法

.DOM:Document Object Model文档对象模型是用于HTML和XML文档的应用程序API.DOM提供了结构化的文档表现形式,
允许程序修改文档的内容和视觉表现。从本质上说,其把网页和脚本或编程语言连接了起来。

2.对于窗口中的脚本,默认引用的是当前窗口的“window”对象。如果需要访问其他框架或窗口的DOM内容,应当显式
的调用窗口对象。
eg:对于如下页面:

 

 代码如下 复制代码
 
//调用如下:
window.parent.frames[1].document.write("hutia");
parent.frame2.document.getElementById("hutia").value;

窗口对象的子对象有"clientInfomation"(客户端信息),"clipboardData"(剪贴板),"document","event","location",
"navigator(浏览器)"等等,各个对象又均有各自的属性,方法,事件和子对象集合。例如:文档(document)对象就有
主体(body)作为子对象,body对象又有页面中的各个元素作为子对象,此类对象类似于HTML标记的层层包含,
构成了HTML页面的文档对象模型树。

3.document对象是HTML页面所有HTML内容的根节点。HTML页面中的所有元素在DOM中均被对象化。
DOM模型的内容中的对象按类别来说分为:
a.HTML元素对象。例如

..b.属性对象。例如

中的href="www.111cn.net"形成的对象。c.注释对象,即 4.代表HTML元素的对象又被称为节点(node),DOM模型中,节点有两种类型:元素节点和文本节点。网易其中a元素形成了一个元素节点。网易为一个文本节点。

5.获取浏览器信息--"navigator"对象。
熟悉"navigator"对象的各种属性就行:navigator.appName....

6.操作剪切板------"clipboardData"对象。
此对象没有属性,只有3个方法:
clearData用于清空剪贴板中的数据:clipboardData.clearData([sDataFormat]);
其中sDataFormat为需要清空的剪贴板数据类型.
getData用于从剪贴板中获取数据:sRetrieveData=object.getData(sDataFormat);
setData用于将数据放置到剪贴板中:sRetrieveData=object.setData(sDataFormat);

7.操作浏览器的历史记录---history对象
history对象只有一个属性:length,是指返回当前历史记录的长度。history对象的方法有:back,forword,go.
前两个无需参数,go的语法为:history.go(vLocation);vLocation可为字符串或者整数。
eg:你输入的信息有误,请

返回上一页重新填写。

8.获取当前页面的URL---location对象。
location对象有方法有:
assign方法将页面跳转到一个新的URL地址:location.assign(strURL);
reload方法用户刷新页面:location.reload();
replace方法用户将页面跳转到一个新的URL地址:location.replace(strURL);

9.读取用户的屏幕分辨率----screen对象。
eg:

 代码如下 复制代码
//将窗口最大化。
function maximizeWindow(){
 window.moveTo(0,0);
 window.resizeTo(screen.availWidth,screen.availHeight);
}
//使窗口相对屏幕居中。
function centerWindow(width,height){
 window.moveTo((screen.availWidth-width)/2,(screen.availHeight-height)/2);
 window.resizeTo(width,height);
}

10.使用DOM的documnt对象
a.document对象特有的属性。
最重要的是cookie前面已讲过。
documentElement属性返回html代表的对象,所以window.document.documentElement.outerHTML来获得整个HTML文档的所有内容。
domain属性返回文档所在的域名
readyState属性返回文档的当前载入状态。
referrer属性可以获得当前页面的引用页面。

b.document对象的方法
1.open方法
open([uURL][,sName][,sFeatures][,bReplace]);
uURL默认为"text/html".sName为需要打开的文档所在的窗口。其他参数与window中的open方法类似。
2.close方法用来关闭文档流对象。
3.writeln和write类似,都是向当前的文档流中写入相应的HTML内容,区别是writeln会附加一个回车。
4.execCommand方法---执行打印,全选等----提供了一个控制浏览器行为的接口。
bSuccess = object.execCommand(sCommand [, bUserInterface] [, vValue])
sCommand为需要执行的命令名称。bUserInterface默认为false标示此命令执行时是否显示用户界面接口。

 代码如下 复制代码

eg:

//全选页面内容
function selectAll(){
 document.execCommand("SelectAll",false);
}
//弹出另存为对话框
function saveAs(){
 document.execCommand("SavaAs",true,"C:\sample/htm");
}

11.插入和删除元素。
a.在容器元素的末尾插入元素---appendChild方法。
container.appendChild(objSub);//objSub必选为需要插入的子元素。此方法会将objSub元素插入到调用该方法的容器元素的最后。
注意:在元素生成后,可以修改其属性。在插入文档后,一些属性变为只读,对其进行赋值会导致错误。
应用:添加新链接

 代码如下 复制代码

function insertLink(){
    var newLink = document.createElement("a");
    newLink.innerHTML = $("txtDesc").value;
    newLink.href = $("txtAddr").value;
    $("div1").appendChild(newLink);
}

b.在指定的元素前插入元素---insertBefor方法
container.insertBefore(objSub [, oChildNode]);//objSub为需要插入的子元素。oChildNode为需要将子元素插入的位置后的元素。
效果:将元素objSub插入container元素的子元素oChildNode前。

c.删除节点---removeChild方法

 代码如下 复制代码
container.removeChild(objSub);

再取一个例子,注意,BODY下的结点深度为2。
<html>
<head>
<title>never-online's website</title>
<script>
  function changedivText (strText) {
    var node = document.getElementById("nodeTest");
    var myNode = node.getElementsByTagName("DIV");
    myNode[0].innerHTML = strText;
}
</script>
</head>
<body>
  <div id="nodeTest">
   <div>tutorial of DHTML and javascript programming</div>
     <input onclick="changedivText('change?')" type="button" value="change"/>
  </div>
</body>
</html>

2、动态创建与插入结点
1)、创建结点对象。document.createElement(tagname),tagname指的是一个标签,比如一个DIV,就是document.createElement("DIV"),

它返回的是这个结点的引用。
2)、在body的尾部插入结点用document.body.appendChild(object),为了容易理解,下面这个示例,我用了IE专有的属性

object.outerHTML,得到一个该元素的HTML标签内容(包括自身),这样会更容易看到效果。

 代码如下 复制代码
<html>
<head>
<title>never-online's website</title>
<script>
   function insertNode (strText) {
     alert("插入元素前的body HTML: " +document.body.outerHTML);
     var node = document.createElement("DIV");
     node.innerHTML = strText;
      document.body.appendChild(node);
      alert("插入元素后的body HTML: " +document.body.outerHTML);
}
</script>
</head>
<body>
 <div>tutorial of DHTML and javascript programming</div>
 <input onclick="insertNode('change?')" type="button" value="change"/>
</body>
</html>

3)、在元素处插入结点。object.insertBefore(oNewNode [, oChildNode]),oNewNode为一个我们创建的结点,oChildNode是可选的,为 object下的一个子节点。同样的,为了看到效果,我也用了outerHTML。示例

 代码如下 复制代码

<html>
<head>
<title>never-online's website</title>
<script>
function insertNode (strText) {
   alert("插入元素前的body HTML: " +document.body.outerHTML);
    var node = document.createElement("DIV");
    var myNode = document.getElementById("textNode");
    node.innerHTML = strText;
     document.body.insertBefore(node,myNode);
   alert("插入元素后的body HTML: " +document.body.outerHTML);
}
</script>
</head>
<body>
<div id="textNode">tutorial of DHTML and javascript programming</div>
<input onclick="insertNode('change?')" type="button" value="change"/>
</body>
</html>

3、移除结点。
1) object.parentNode.removeChild(oChildNode),这个就是语法,下面看示例。

 代码如下 复制代码

<html>
<head>
<title>never-online's website</title>
<script>
  function insertNode (strText) {
    alert("插入元素前的body HTML: " +document.body.outerHTML);
    var node = document.createElement("DIV");
    var myNode = document.getElementById("textNode");
    node.innerHTML = strText;
    document.body.insertBefore(node,myNode);
    alert("插入元素后的body HTML: " +document.body.outerHTML);
}

   function removeCreateNode() {
     alert("移除元素前的body HTML: " +document.body.outerHTML);
     var node = document.getElementById("textNode");
     node.parentNode.removeChild(node);
     alert("移除元素前的body HTML: " +document.body.outerHTML);
}
</script>
</head>
<body>
<div id="textNode">tutorial of DHTML and javascript programming</div>
<input onclick="insertNode('change?')" type="button" value="insert"/>
<input onclick="removeCreateNode()" type="button" value="remove"/>
</body>
</html>

parentNode和parentElement功能一样,childNodes和children功能一样。但是parentNode和childNodes是符合W3C标准的,可以说比较通用。而另外两个只是IE支持,不是标准,Firefox就不支持

时间: 2024-08-31 04:51:12

JavaScript学习笔记之DOM基础用法的相关文章

JavaScript学习笔记之DOM基础 2.4_javascript技巧

DOM的发展,与WEB标准化的大趋势相关甚密.只有基于正确的语义逻辑,DOM才能正确地发挥其功用.如今,正确的语义结构.表现与内容分离等要求,都已经成为网页设计中的基本要求.因此,在网页前端开发中,DOM的存在,无疑是为表现层.行为层甚至内容层面的连接提供了一个绝佳的API,成为热门的Ajax应用中不可或缺的组成部分. 一.平稳退化 1.概念 早期,在未使用JavaScript之前,网页中的内容可以正常显示出来,用户可以通过外设(如鼠标)操控浏览到相关内容,这种浏览体验对用户而言可能并不理想.

javascript学习笔记(四)function函数部分_基础知识

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. Jscript 支持两种函数:一类是语言内部的函数(如eval() ),另一类是自己创建的. 在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它.(该变量的作用域是局部的). 您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量. 函数的调用方式 1.普通调用:functionName(实际参数...) 2.通过指向函数的变量去调用: var  myVar

JavaScript学习笔记整理_setTimeout的应用_基础知识

setTimeou的t应用 var ids = []; function foo1(i) { this.i = i; console.log('i = '+i); ids[0] = setTimeout((function () { foo1(i); }),1000); } function foo2(j) { this.j = j; console.log('j = '+j); ids[1] = setTimeout((function () { foo2(j); }),1000); } fo

javascript学习笔记_浅谈基础语法,类型,变量_基础知识

基础语法.类型.变量 非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1.用x != x ,当x为NaN时才返回true; 2.用isNaN(x) ,当x为NaN或非数字值时,返回true; 3.用isFinity(x),在x不是NaN.Infinity.-Infinity时返回true; 虽然(字符串.数字.布尔值)不是对象,他们的属性是只读的,但也可以像操作对象一样来引用他们的属性和方法,原理: javascript构造一个(String.Number.Boo

JavaScript学习笔记整理_用于模式匹配的String方法_基础知识

用于模式匹配的String方法: String支持4种使用正则表达式的方法: seach()用于检索,参数是一个正则表达式,返回第一个与之匹配的子串的位置,找不到则返回-1,如果参数不是正则表达式,则首先会通过RexExp构造函数将它转换成正则表达式,seach()方法不支持全局搜索,它忽略修饰符g: replace()用于检索与替换操作,第一个参数是一个正则表达式,第二个参数是要进行替换的字符串.它对调用该方法的字符串检索,按照模式匹配子串替换成第二个参数,若包含修饰符g则全文匹配.若第一个参

Javascript学习笔记之 对象篇(四) : for in 循环_基础知识

先上范例: // Poisoning Object.prototype Object.prototype.bar = 1; var foo = {moo: 2}; for(var i in foo) { console.log(i); // prints both bar and moo } 这里我们要注意两点,一是 for in 循环会忽略 enumerable 设置为 false 的属性.例如一个数组的 length 属性.第二是,由于 for in 会遍历整个原型链,所以当原型链过长时,会

Javascript学习笔记9 prototype封装继承_基础知识

好,那就让我们一步步打造,首先让我们来看下继承原本的写法: 复制代码 代码如下: <script> var Person = function(name, age) { this.name = name; this.age = age; } Person.prototype.SayHello = function () { alert(this.name + "," + this.age); }; var Programmer = function (name, age,

Javascript学习笔记8 用JSON做原型_基础知识

代码如下: 复制代码 代码如下: <script type="text/javascript"> var People = { name: "kym", age: 21, SayHello: function () { alert("Hello,My name is " + this.name + ".I am " + this.age); } } alert(People.name); People.SayHel

jQuery学习笔记之DOM操作、事件绑定(2)

jQuery学习笔记之DOM操作.事件绑定(2) --------------------学习目录------------------------ 4.DOM操作 5.事件绑定 源码地址: https://github.com/iyun/jQueryDemo.git --------------------学习目录------------------------ 4.DOM操作(节点增删改查) 节点查找:节点分为三种类型:元素节点.属性节点.文本节点 创建节点 创建元素节点 使用 jQuery