一DOM
Document Object Model (文档对象模型)
二、获取节点
1》document.getElementById() 选取有id的节点
2》document.getElementsByTagName() 选取节点名称
3》document.getElementsByClassName() 获取有class 节点的
三、Dom树
日常能见到的树:
树的部分:树枝 树干 果实
看不到:树(根)--最主要的
Document --- Html ----head|body------div| p |h1
四、节点 DOM对象
div
P
h1
input
span
……
***************************对象有属性 对象有方法*****************************
var arr = new Array();
arr.length
arr.join()
五、Dom对象(节点)的属性
1》childNodes 返回子节点的一个集合
*************************子节点元素节点、文本节点、属性节点
2》nodeName 返回节点名称 大写 js 严格区分大小写的
3》nodeType 返回数字 (节点类型)
4》firstChild 获取到第一个子元素
5》lastChild 获取到最后一个字元素
6》firstElementChild 获取到第一个元素子节点
7》lastElementChild获取到最后一个元素子节点
8》parentNode 获取到父节点
9》nodeValue 节点文本 必须是文本节点才可以获取值
***************************
注意:在ie8 或以下版本 firstChild 这个属性是获取的第一个元素节点 并且是第一个子元素,而firstElementChild 这个属性,在低版本不认识
*************返回的是1代表元素节点,返回的是3代表文本节点
六、节点的分类
<div id = ‘box’></div> 元素节点
<div id = ‘box’>123</div> 文本节点
<img src=’’ alt=’’/> 属性节点
七、 节点方法
1》getAttribute() 获取属性值
2》setAttribute() 设置属性值
3》removeAttribute() 删除属性值
八、节点的创建
1》创建元素节点
语法:document.createElement(元素名)
2》创建文本节点
语法:document.createTextNode(文本内容)
九、添加节点
1》追加
父元素.appendChild()
2》前置
父元素.insertBefore()
十、删除节点
语法 父元素.removeChild(删除的子元素)
十一、元素样式
box.style.样式名称 ====》只能获取都行内样式
****************************
如何获取样式表中的样式
1》 非IE
getComputedStyle(元素,null).样式名称
2》 IE(8)或IE(8)以下
box.currentStyle.样式名称
十二、元素大小
offsetWidth
offsetHeight
******注意
1》 没有加入单位的(类型:数值number)
2》 计算:
a) 计算边框(border)
b) 计算内边距(padding)
十三、元素偏移
offsetLeft
offsetTop
******注意
1》 没有加入单位的(类型:数值number)
2》 计算:
a) 计算margin
3》 定位
1) 如果没有定位:返回元素距离屏幕左侧(顶部)的偏移量
2) 如果有定位:返回元素左侧(顶部)和定位元素距离的偏移量
scrollTop
scrollLeft
**************滚动的距离
十四、获取宽度和搞定(文档、可视区域)
document.documentElement=文档的文档元素
document.body=文档的body
clientWidth
clientHeight
获取可视区域宽度和高度
十五、标准模式和混杂模式
标准模式 document.documentElement
混杂模式:document.body
兼容处理:
document.body || document.documentElement
//var box = document.getElementById("box");
/*var uls = document.getElementById("uls");
var lis = uls.getElementsByTagName("li");
//var lis = docuemnt.getElementsByTagName("li");
//文档对象 的 所有li元素
//alert(lis)
for(var i = 0 ; i < lis.length; i++){
lis[i].style.background = "red";
}
*/
/*
var lis = document.getElementsByClassName("lis");
alert(lis.length)
for(var i = 0 ; i < lis.length ; i+=){
lis[i].style.background = "orange"
}*/
//封装一个函数 实现可以获取到class 名的节点
//var dom = document.getElementsByTagName("*");//获取到所有的节点的个数
//alert(dom.length)
/*function fn(cName){
//1>把页面上所有的节点都选取到
//2》每一个节点的class 名称和参数cName做比较
//3》如果相等,把节点添加到数组中,
//4》最后返回数组
var dom = document.getElementsByTagName("*");
var arr = [];
for(var i = 0 ; i < dom.length; i++){
if (dom[i].className.indexOf(cName) != -1){
arr.push(dom[i])
}
}
return arr;
}
var lis = fn("lis");
//alert(lis.length);
for(var i = 0 ; i < lis.length ; i ++){
lis[i].style.background = "red"
}
*/
//轮播图js
/*var container = document.getElementById("container"),
left = document.getElementById("left"),
right = document.getElementById("right"),
oul = document.getElementById("oul"),
lis = oul.getElementsByTagName("li"),
ool = document.getElementById("ool"),
ols = ool.getElementsByTagName("li"),
index = -1;
container.onmousemove = function(){
left.style.display = "block";
right.style.display ="block"
}
container.οnmοuseοut= function() {
left.style.display = "none";
right.style.display ="none"
}
left.onclick = function(){
for(var i = 0 ; i < lis.length; i ++){
lis[i].style.display = "none"
ols[i].className = ""
}
index--;
if(index < 0 ){
index = lis.length - 1;
}
lis[index].style.display = "block";
ols[index].className = "active"
}
right.onclick = function (){
for(var i = 0 ; i < lis.length; i ++){
lis[i].style.display = "none"
ols[i].className = ""
}
index++;
if(index > lis.length - 1 ){
index = 0;
}
lis[index].style.display = "block";
ols[index].className = "active"
}
*/
//点击按钮切换
/*for ( var i = 0 ; i < ols.length; i++){
ols[i].onclick = function(){
for(var i = 0 ; i < lis.length; i ++){
lis[i].style.display = "none"
ols[i].className = ""
}
alert(index)
lis[index].style.display = "block";
ols[index].className = "active"
}
}*/
//Dom树
//var box = document.getElementById("box");
//alert(box);//dom对象
//var uls = document.getElementById("uls");
//alert(uls.childNodes.length)
//alert(uls.childNades[0])
//document.write(box.nodeName)
/*for( var i = 0; i < uls.childNodes.length ; i++){
if(uls.childNodes[i].nodeName == "LI"){
uls.childNodes[i].style.background = "red"
}
}*/
/*alert(uls.childNodes[0].nodeType);//返回节点类型元素1 文本3
for(var i = 0 ; i < uls.childNodes.length ; i++){
if(uls.childNodes[i].nodeType == 1){
uls.childNodes[i].style.background = "red"
}
}*/
//节点属性 firstChild lastChild
//var uls = document.getElementById("uls");
//alert(uls.firstChild); // text = uls.childNodes[0]
//alert(uls.lastChild);
//uls.lastChild.style.background= "red";
//alert(uls.parentNode)
//案例
//1》给所有的a 加入onclick 事件
/*var oA = document.getElementsByTagName('a');
for(var i = 0 ; i < oA.length ; i++){
oA[i].onclick = function(){
this.parentNode.style.display = "none";
}
}
*/
/*var box = document.getElementById("box");
//alert(box.innerHTML)
//alert(box.nodeValue);//null
alert(box.childNodes[0].nodeValue)
*/
//节点方法
/*var imgs = document.getElementById("imgs");
//alert( imgs.getAttribute("id"))
var box = document.getElementById("box");
//alert(box.getAttribute("style"))
imgs.setattribute("src","2.png");
imgs.removeAttribute("src");*/
//案例
/*var imgs = document.getElementById("imgs");
function fn(min,max){
var str = Math.random()*(max - min)+min;
return str;
}
setInterval(function(){
imgs.setAttribute("style","width:"+fn(10,100)+"px;position: absolute; left: "+fn(0,1300)+"px;right:"+fn(0,650)+"px")
},500)*/
//创建节点
/*var oDiv = document.createElement("div");
document.body.appendChild(oDiv)//追加节点
var otxt = document.createTextNode("我是box");
var box = document.getElementById("box");
box.appendChild(otxt)*/
/*uls.insertBefore(box)
uls.removeChild(lis[1])*/
//简易留言板
/*var btn = document.getElementById("btn"),
uls = document.getElementById("uls"),
txt = document.getElementById("txt");
btn.onclick = function(){
var lis = document.getElementsByTagName("li");
//创建li元素节点
var oLi = document.createElement("li");
//放入ul元素节点
uls.appendChild(oLi);//追加
// uls.insertBefore(oLi,lis[0]);//前置
// var t = document.createTextNode(txt.value)
//把txt 的value 放入到节点中
// oLi.appendChild(t)
oLi.innerHTML = txt.value+" <a href = 'javascript:;'> 删除</a>";
var oA = document.getElementsByTagName("a");
for(var i = 0 ; i < oA.length ; i++){
oA[i].onclick = function(){
uls.removeChild(this.parentNode)
}
}
}
*/
//Dom 元素样式
//var box = document.getElementById("box");
//alert(box.style.width); //只能获取到元素样式
//alert( getComputedStyle(box,null).width ) ;//非IE 获取元素样式 这个是一个方法
//alert( box.currentStyle.width ) ; //IE8或以下版本 这个是属性
//处理兼容
/*function getAttr(dom,value){
if(dom.currentStyle){ // 先IE 判断 再非IE getComputedStyle(dom,null)
return dom.currentStyle[value]
}else{
return getComputedStyle(dom,null)[value]
}
}
alert( getAttr(box,"width") );
*/
//元素大小
/*var box = document.getElementById("box");
//alert(box.offsetWidth);//300 number
//写一个定时器 实现box每隔500毫秒box盒子增加10px
setInterval(function(){
//box.style.width = box.offsetWidth-2+"px";
//302 -2 = 300
//302 -2 = 300
box.style.width = parseInt(getAttr(box,"width")) -1+"px";
},50)
function getAttr(dom,value){
if(dom.currentStyle){
return dom.currentStyle[value] ;//IE
}else{
return getComputedStyle(dom,null)[value];//非IE
}
}
*/
//元素偏移
/*var box = document.getElementById("box");
//alert("left "+box.offsetLeft)
//alert("top "+box.offsetTop)
var dv2 = document.getElementById("dv2");
alert(dv2.offsetLeft)*/
//滚动的距离
/*var btn = document.getElementById("btn");
btn.onclick = function(){
alert(box.scrollLeft)
}
*/
//获取宽度和搞定(文档、可视区域)
//alert(document.documentElement.clientWidth)
//alert( document.body.clientWidth)
//alert(document.documentElement.clientHeight)
//alert(document.body.clientHeight)
//标准模式和混杂模式
var btn = document.getElementById("btn");
btn.onclick = function(){
// alert( document.documentElement.scrollTop);
alert(document.body.scrollTop);
var top = document.body.scrollTop || document.documentElement.scrollTop;
//alert(top)
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<!--<link rel="stylesheet" href="style.css" />-->
<style>
/**{margin:0;padding: 0;}*/
/*#box{
width:50px;
height:70px;
background:pink;
overflow: scroll;*/
/*border:1px solid #000;
padding:10px;
*/
/*position: relative;
margin: 50px;*/
/*}*/
/*#dv2{
width:100px;
height:100px;
background:red;
margin: 50px;
position: absolute;
left:50px;
top:50px;
}*/
</style>
</head>
<body style="height: 2000px;">
<input type="button" name="btn" id="btn" value="点击" />
<!--<div id="box">
<p>fghjkl;';lkjhgfdertyuiopplnbfr5t6yuj'</p>
<p>fghjkl;';lkjhgfdertyuiopplnbfr5t6yuj'</p>
<p>fghjkl;';lkjhgfdertyuiopplnbfr5t6yuj'</p>
<p>fghjkl;';lkjhgfdertyuiopplnbfr5t6yuj'</p>-->
<!--<div id="dv2"></div>-->
<!--</div>
<input type="button" id="btn" value="滚动" />-->
<script src="script.js"></script>
</body>
</html>
<!--style="background: #000;"-->
<!--轮播图-->
<!-- <div id="container">
<ul id="oul">
<li><img src="images/1.jpg"/></li>
<li><img src="images/2.jpg"/></li>
<li><img src="images/3.jpg"/></li>
<li><img src="images/1.jpg"/></li>
<li><img src="images/2.jpg"/></li>
</ul>
<div id="left"></div>
<div id="right"></div>
<ol id="ool">
<li class="active"></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ol>
</div>-->
<!--Dom树-->
<!--<div id="box">
<ul id="uls">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</div>-->
<!--<ul>
<li>1<a href="javascript:;">隐藏</a></li>
<li>2<a href="javascript:;">隐藏</a></li>
<li>3<a href="javascript:;">隐藏</a></li>
<li>4<a href="javascript:;">隐藏</a></li>
<li>5<a href="javascript:;">隐藏</a></li>
</ul>-->
<!--<div id="box">我是box</div>-->
<!--<img src="../04/00.png" id="imgs" />
<div id="box" style="width:300px; height: 300px;margin: 0 auto;"></div>
-->
<!--案例-->
<!--<img src="../04/00.png" id="imgs"/>-->
<!--<div id="box"></div>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>-->
<!--<h1>简易留言板</h1>
<input type="text" id="txt"/>
<input type="button" value="留言" id="btn" />
<div id="box">
<ul id="uls">
<a href=""
</ul>
</div>-->