DOM



<style type="text/css">
div.content{
width:200px;
height:100px;
border:2px solid red;
border-radius: 50%;
text-align: center;
line-height: 100px;
background-color: aqua;
margin-left: 100px;
}
button{
width: 100px;
height: 100px;
margin-left: 20px;
background-color:red;
}
.active{
display: inline-block;
background-color: yellow;
}
</style>
</head>
<body>
<button class="active">shen</button>
<button>cheng</button>
<button>wei</button>
<div class="content"></div>
<div class="content"></div>
<div class="content"></div>
<script>
var btn=document.getElementsByTagName("button");//获取所有的button标签
var div=document.getElementsByClassName("content");//获取所有类名是content的标签
for(var i=0;i<btn.length;i++)
{
(function(i){
btn[i].onclick=function(){
for(var j=0;j<btn.length;j++){
btn[j].className="";
div[j].style.display="none";
}
this.className="active";
div[i].style.display="block";
}
}(i))

}


dom基本框架:








这个方法表示选中结点是否有子结点,返回布尔值

下面是nodeType( )后分别返回的结果

下面是一种不利用children访问元素节点的方法:

var div=document.getElementsByTagName("div")[0];
function returnElementChild(node){、
//类数组
var temp={
length:0,
push:Array.prototype.push,
splice:Array.prototype.splice
},
child=div.childNodes,
length=child.length;
for(var i=0;i<length;i++){
if(child[i].nodeType==1){
temp.push(child[i]);
}
}
return temp;
}
console.log(returnElementChild(div));


他们通过原型链的方式进行链接和继承


第一种:


第二种:



都是选中了第一个div标签下的span


一般在开发中我们会经常使用第二种


另外我们可以直接选中下面的三个标签:


这个是选中html标签




创建元素节点:

var div=document.createElement("div")


创建文本结点

var text=document.createTextNode("你好");



插入:

1.

<body>
<div></div>
<span></span>
<script type="text/javascript">
var div=document.getElementsByTagName("div")[0];//取出第一个div标签
var text=document.createTextNode("宝宝");//创建文本结点
div.appendChild(text);//插入
</script>

</body>




2.

div.insertBefor(a,b)

理解为把a插入到b的前面



删除:

1.

<body>
<div>
<span></span>
<strong></strong>
</div>
<span></span>
<script type="text/javascript">
var div1=document.getElementsByTagName("div")[0];
var span=document.getElementsByTagName("span")[0];
div1.removeChild(span);
</script>
</body>

删除子节点

div里面的span标签就没了,而且可以用参数接收这个函数的返回值,相当于剪切


2.

<body>
<div>
<span></span>
<strong></strong>
</div>
<span></span>
<script type="text/javascript">
var div1=document.getElementsByTagName("div")[0];
var span=document.getElementsByTagName("span")[0];
span.remove();
div1.remove();
</script>
</body>

直接去掉,但是只能是先把标签取出来然后才能进行操作

而且没有返回值,直接销毁



<body>
<div>
<span></span>
<strong></strong>
</div>
<span></span>
<script type="text/javascript">
var div1=document.getElementsByTagName("div")[0];
var span=document.getElementsByTagName("span")[0];
span.innerHTML=132;
// var span=document.getElementsByTagName("span")[0];
// span.remove();
// div1.remove();
</script>
</body>

span.innerHTML是取到标签里面的内容


设置行间属性,steAttribute("属性名",“属性值”)



获取属性值


另外修改id和class可以直接:

div.class=...

div.id=....



例题:实现类似insertBefor( )方法的insert After()方法

<div>
<i></i>
<b></b>
<span></span>
</div>

Element.prototype.insertAfter=function(targetnode,afternode){
var befor=afternode.nextElementSibling;
if(befor==null){//如果它的下一个元素节点没有的话,就说明到底
this.appendChild(targetnode);
}
else{//如果有下一个结点,那么就放在下一个结点的前面
this.insertBefor(targetnode,befor);
}
}
var div=document.getElementsByTagName("div")[0];
var b=document.getElementsByTagName("b")[0];
var span=document.getElementsByTagName("span")[0];
div.insertAfter(b,span);


实现一个功能:两个input,里面的秒和分不断变化,直到30分0秒停止:

minutes:<input type="text" value="0">
seconds:<input type="text" value="0">
<script>
var num=0;
var num2=0;
var value1=document.getElementsByTagName("input")[0];
var value2=document.getElementsByTagName("input")[1];
setInterval(function(){
num++;
if(num==60){
num=0;
num2++;
}
if(num2==30){
clearInterval(1);
}
value1.value=num2;
value2.value=num;
},10)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值