新长城 Dom Day01

演示window中的其他对象


out.js(Code)代码:

//打印不换行

function print(param){

document.write(param);

}

//打印并换行

function println(param){

document.write(param+"</br>");

}

(Code)代码:

<script type="text/javascript" src="out.js"></script>

<!--为了演示方便,定义一个事件源。通过对事件源的触发,获取想要的结果。比如让用户通过点击按钮就可以知道浏览器的一些信息。

-->


<!--定义按钮 onclick事件的处理方式。-->

<script type="text/javascript">

//演示window对象中的navigator对象

function windowObjDemo(){

var name = navigator.appName;//浏览器名称

var version = navigator.appVersion;//浏览器版本


println(name+":"+version);

}

//演示window对象中的location对象

function windowObjDemo2(){

var pro = location.protocol;//浏览器协议消息头

var text = location.href;//浏览器超链接栏

//alert(text);

/*

给location的href属性设置一个值。

改变了地址栏的值,并对其值进行了解析如果是http,还进行连接访问。

*/


location.href = "http://edu.csdn.net/";

}

</script>


<!--定义事件源,注册事件关联的动作-->

<input type="button" value="演示window中的对象" οnclick="windowObjDemo2()" />


<!--演示window中的常见方法。-->

Code(代码):

<script type="text/javascript" src="out.js"></script>

<script type="text/javascript">

var timeid;

//准备抖动

function windowMethodDemo(){

//对话框,返回一个操作的boolean值。

var b = confirm("需要抖动请点击确定?");

if(b){

alert("3秒后开始抖动,请别吓到哦!亲");

timeid = setTimeout("windowMove()",3000);

}else{

alert("你没有点击抖动哦,请重新点一下。");

}

}


//暂停抖动

function stopTime(){

clearTimeout(timeid);

}


//抖动方法

function windowMove(){

//moveBy(10,10);

//moveTo(40,40);

for (var x = 0; x < 700; x++){

moveBy(20, 0);

moveBy(0, 20);

moveBy(-20,0);

moveBy(0,-20);

}

}


//打开新窗口

function windowOpen(){

open("http://edu.csdn.net/","_blank","status=no,toolbar=no,menubar=no,location=no");

timeid = setTimeout("close()",2000);

//clearTimeout(timeid);//如果清除TimeOut指令就用这个方法。

}

</script>


<input type="button" value="对话框" οnclick="windowMethodDemo()"/>

<input type="button" value="我不想抖了,停下来吧!" οnclick="stopTime()"/>

<input type="button" value="黑马程序员官网" οnclick="windowOpen()"/>


Window对象事件

Code(代码):

<script type="text/javascript">

window.onload = function(){

alert("加载完");

}


window.onunload = function(){

alert("关闭后");

}


onbeforeunload = function(){

alert("关闭前");

}

</script>


<!--document对象的演示。

该对象将标记型文档进行封装。

该对象的作用,是对可以标记型文档进行操作。

最常见的操作就是,想要实现动态效果,需要对节点操作,那么要先获取到这个节点。

要想获取节点,必须要先获取到节点所属的文档对象document。


所以document对象最常见的操作就是获取页面中的节点。 


获取节点的方法体现:

1,getElementById():通过标签的id属性值获取该标签节点。返回该标签节点。

2,getElementsByName(): 通过标签的name属性获取节点,因为name有相同,所以返回的一个数组。

3,getElementsByTagName(): 通过标签名获取节点。因为标签名会重复,所以返回的是一个数组。


凡是带s返回的都是数组。

-->

<script type="text/javascript">

function getNodeDemo(){

/*需求:获取页面中的div节点。

思路:通过docment对象完成。因为div节点有id属性。 所以可以通过id属性来完成获取。 */


var divNode = document.getElementById("divid");

//节点都有三个必备的属性。节点名称,节点类型,节点值。

alert(divNode.nodeName+"..."+divNode.nodeType+"..."+divNode.nodeValue);

/*常见节点有三种:

1,标签节点:类型 1

2,属性节点:类型 2

3,文本节点:类型 3

4,注释节点:类型 8

5,文档节点:类型 9


标签型节点是没有值的,属性和文本节点是可以有值的。*/


//获取div节点中的文本。

var text = divNode.innerHTML;

alert(text);


//改变div中的文本。

divNode.innerHTML = "黑马程序员".fontcolor("Green");

}


//获取文本框节点演示getElementsByName方法

function getNodeDemo2(){

//格式一:

var nodes = document.getElementsByName("user");

alert(nodes[0].value);


//格式二:

var userNode = document.getElementsByName("user")[0];

alert("---"+userNode.value+"---");


//俩种方式选择一种即可.

}


//获取超链接节点对象。演示getElementsByTagName方法。

function getNodeDemo3(){

//直接用标签名称获取。

var nodes = document.getElementsByTagName("a");


//alert(nodes.length);

//alert(nodes[0].innerHTML);


/*改变属有超链接的target属性*/

for(var x=0; x<nodes.length; x++){

alert("改变了target属性的链接..."+nodes[x].innerHTML);

nodes[x].target = "_blank";

}

}

/*对于页面中的超链接,通过新窗口打开。

当然是要获取其中被操作的超链接对象啊。

可是通过document获取超链接,拿到的是页面中所有的超链接节点。


只想一部分链接在新窗口打开,该如何办呢?

只要获取到被操作的超链接所属的节点即可。 

在通过这个节点获取到它里面所有的超链接节点。

*/

function getNodeDemo4(){

//获取超链接所属的div节点

var divNode = document.getElementById("newslink");


//通过对div对象方法的查找发现它也具备getElementsByTagName方法。

//记住:所有的容器型标签都具备这个方法。在该标签范围内获取指定名称的标签。

var aNodes = divNode.getElementsByTagName("a");

for(var x=0;x<aNodes.length; x++){

//alert(aNodes[x].innerHTML);

aNodes[x].target = "_blank";

}

}

</script>


<input type="button" value="通过标签的ID属性获取节点" οnclick="getNodeDemo()" />

<input type="button" value="通过标签的name属性获取节点" οnclick="getNodeDemo2()" />

<input type="button" value="通过标签名称获取节点" οnclick="getNodeDemo3()" />

<input type="button" value="改变Div范围内的超链接target属性" οnclick="getNodeDemo4()"/>


<div id="divid">Div</div>


<input type="text" name="user" value="黑马程序员——新长城" />< /br >


<a href="http://edu.csdn.net">黑马程序员</a>

<a href="http://www.web.itcast.cn">黑马程序员</a>

<div id="newslink">

<a href="http://www.so.com">360搜索</a>

<a href="http://www.sina.com.cn">新浪网</a>

</div>


通过节点的层次关系获取节点对象。

<!--

关系:

1,父节点: parentNode:对应一个节点对象。

2,子节点:childNodes:对应一个节点集合。

3,兄弟节点:

上一个兄弟节点:previousSibling

下一个兄弟节点:nextSibling

-->

 

<script type="text/javascript">

function getNodeByLevel(){

//获取页面中的表格节点。 

var tabNode = document.getElementById("tabid");

//获取父节点。parentNode

var parentnode = tabNode.parentNode;

//alert(parentnode.nodeName);//body

//获取子节点。childNodes

var nodes = tabNode.childNodes;

//alert(nodes[0].childNodes[0].nodeName);

//获取兄弟节点。previousSibling

//上一个兄弟节点。

var previousSiblingNode = tabNode.previousSibling;

//alert(previousSiblingNode.nodeName);//换行符

//下一个兄弟节点。

var nextSiblingNode = tabNode.nextSibling.nextSibling;

//alert(nextSiblingNode.nodeName);

/*尽量少用兄弟节点,因为在解析的时候会出现浏览器不同解析不一致,

会解析出标签间的空白文本节点。*/

}

</script>

<input type="button" value="通过节点层次关系获取节点" οnclick="getNodeByLevel()" />

<div>div</div>

<span>span</span>

<table id="tabid">

<tr>

<td>黑马程序员</td>

<td>CSDN社区</td>

</tr>

</table>

<span>Span</span>

<dl>

<dt>黑马</dt>

<dd>黑马论坛</dd>

<dd>黑马程序员</dd>

</dl>

<a href=''>一个超链接</a>


对节点的增删改查

<style type="text/css">

div{

border:#00ccff 1px solid;

width:200px;

padding:30px;

margin:10px;

}

#div_1{

background-color:#F33;

}

#div_2{

background-color:#FFccff;

}

#div_3{

background-color:#cc00ff;

}

#div_4{

background-color:#00FF00;

}

</style>

<script type="text/javascript">

//创建并添加节点。

//需求:在div_1节点中添加一个文本节点。 

function crtAndAdd(){

/*

 * 1,创建一个文本节点。

 * 2,获取div_1节点。

 * 3,将文本节点添加到div_1节点中。

 */


//1, 创建节点。使用document中的createTextNode方法。 

var oTextNode = document.createTextNode("这是一个新的文本 ");


//2,获取div_1节点。

var oDivNode = document.getElementById("div_1");


//3,将文本节点添加到div_1节点中。

oDivNode.appendChild(oTextNode);

}


//需求:在div_1中创建并添加一个按钮节点。

function crtAndAdd2(){

//1,创建一个按钮节点。

var oButNode = document.createElement("input");

oButNode.type = "button";

oButNode.value = "一个新按钮";


//2,获取div_1节点。

var oDivNode = document.getElementById("div_1");


//3,将按钮节点添加到div_1节点中。

oDivNode.appendChild(oButNode);

}


//通过另一种方式完成添加节点。

function crtAndAdd3(){

/*

 * 其实是使用了容器型标签中的一个属性。innerHTML.

 * 这个属性可以设置html文本。

 */


//1,获取div_1节点。

var oDivNode = document.getElementById("div_1");

//oDivNode.innerHTML = "<input type='button' value='有个按钮'/>";


oDivNode.innerHTML = "<a href='http://edu.csdn.net'>黑马程序员,欢迎您!</a>";

}


//需求将div_2节点删除。

function delNode(){

//1,获取div_2节点。

var oDivNode = document.getElementById("div_2");


//2,使用div节点的remvoeNode方法删除。

//oDivNode.removeNode(true);较少用。


//一般使用removeChild方法。 删除子节点。

//获取div_2的父节点,然后在用父节点的removeChild,将div_2删除。

oDivNode.parentNode.removeChild(oDivNode);

}


//需求:用div_3节点替换div_1节点。

function updateNode(){

/*

 * 获取div-3和div-1.

 * 使用replaceNode进行替换。

 */

var oDivNode_1 = document.getElementById("div_1");

var oDivNode_3 = document.getElementById("div_3");

//oDivNode_1.replaceNode(oDivNode_3);

// 建议使用replaceChild方法。

oDivNode_1.parentNode.replaceChild(oDivNode_3,oDivNode_1);

}


//需求:希望用div_3替换div-1,并保留div-3节点。其实就是对div_3进行克隆。

function cloneDemo(){

var oDivNode_1 = document.getElementById("div_1");

var oDivNode_3 = document.getElementById("div_3");

var oCopyDiv_3 = oDivNode_3.cloneNode(true);


//oDivNode_1.replaceNode(oDivNode_3);

// 建议使用replaceChild方法。

oDivNode_1.parentNode.replaceChild(oCopyDiv_3,oDivNode_1);

}

</script>


<input type="button" value="创建并添加节点" οnclick="crtAndAdd3()"/>

<input type="button" value="删除节点" οnclick="delNode()"/>

<input type="button" value="修改节点" οnclick="updateNode()"/>

<input type="button" value="克隆节点" οnclick="cloneDemo()"/>


<hr/>


<div id="div_1">


</div>


<div id="div_2">

I'm coming. 黑马程序员!

</div>


<div id="div_3">

div区域演示文字。

</div>


<div id="div_4">

节点的增删改查。

</div>


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值