传说中的DOM

DOM对象:

// 获取节点.

var redDiv = document.getElementsByTagName('div')[0];


// 创建标签类型节点

var span = document.createElement("span");

// span.innerText = "2016年8月8号";


// 创建文本类型的节点

var text = document.createTextNode("2016年8月8号");


//将文本插入到span标签中

span.appendChild(text);


// 在redDiv末尾插入span标签(写一个参数的时候,默认在末尾插入)

redDiv.appendChild(span);


// 在XXX之前插入span,下面两个参数,表将前者插入在后者之前

redDiv.insertBefore(span, redDiv.children[1]);


// 移出的方法。移除节点,先获取到对应标签,这里移除p

var p = document.getElementsByTagName("address")[0];

 redDiv.removeChild(p);// 移出div的子节点p

// 也可以这样写

p.remove();


//替换标签,参数前者为新的标签,后者为要被替换掉得标签

var h2 = document.createElement("h2");

h2.innerText = "泗泾";

h2.style.color = "blue";

redDiv.replaceChild(h2, redDiv.children[0]);


//获取各类节点的方法

childNodes:所有子节点

children:所有是标签类型的子节点

parentNode:父节点

nextSibling:下一个兄弟节点

previousSibling:上一个兄弟节点

firstChild : 第一个子节点

lastChild:最后一个子节点


DOM属性:

dom的属性:className   ,id ,innerHTML, innerText ,style。

在dom中常用的:(相对于元素来说)

// 大小 width height

console.log(box.offsetHeight);//带边框高度

console.log(box.clientHeight);//可视高度(不包含滚动条和边框等。)

console.log(box.scrollHeight);//内容总高度

// 位置 left top

console.log("----")

console.log(redDiv.offsetTop);//相对于定位父级的top值

console.log(redDiv.clientTop);//上边框的距离

box.onclick = function(){

console.log(box.scrollTop);//box滚动上去的那一部分,不能滚动的元素,scrollTop一般为0。

}


说到这里就不得不说一下clientX/Y,offsetX/Y,pageX/Y几者之间的区别了(用实例来说):

var box = document.getElementsByClassName("box")[0];

box.onclick = function(ev){

var evObj = window.event || ev;

// target 即为触发事件的元素。如果是redDiv 被点击,那么虽然redDiv是box的子级,但是打印的就不是box了,而是redDiv(注意与this区分),也就是说触发事件的元素不一定是绑定事件的元素

// console.log(this);

console.log(evObj.target);

console.log(evObj.offsetY);//鼠标距离自身(触发事件的元素,不一定是绑定事件的元素)的Y轴的距离

console.log(evObj.clientY);//鼠标距离屏幕的Y轴的距离

console.log(evObj.pageY);//鼠标距离页面的Y轴的距离(也就是包含默认的8像素的页面的那个距离)

}


附加:窗口宽度

// inner 不包含工具栏,控制台

console.log(window.innerWidth);

// outer 包含工具栏,控制台

console.log(window.outerWidth);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值