JS笔记(二) DOM部分

本文详细介绍了JavaScript中的DOM基本操作,包括节点的增删改查、遍历树、事件处理以及DOM结构树的理解。重点讲解了如何通过DOM方法进行元素选择、添加事件、动态创建元素以及遍历节点树。此外,还涵盖了日期对象Date()的使用、定时器、滚动条处理、元素尺寸和位置的获取等BOM相关知识。文章深入探讨了事件冒泡、捕获、事件委托机制以及事件处理程序的运行环境。
摘要由CSDN通过智能技术生成

DOM

DOM定义了表示和修改文档所需的方法。dom对象即为宿主对象,由浏览器厂商定义,用来操作html和xml功能的一类对象的集合(但不能操作CSS样式表,但是可以通过操作html改变行间样式来间接改变)。也有人称DOM是对HTML以及XML的标准编程接口

DOM基本操作

对节点的增删改查
查看元素节点

把对象放在一个类数组里 不能使用push方法

document代表整个文档

  • document.getElementById()//元素id在ie8以下的浏览器,不区分id大小写,而且也返回匹配class的名字为name属性的元素(不要太依赖id选择器)

    • 在实际开发中,每个员工会拿到一个<section></section>,要在里边写自己的id = “”,来区别,会在后边作为后端php,jsp的一个抽取接口,根据id名来把section抽取掉,最后会换id名,换成它想要的,代码整合 (自己运行的时候好使,连接前后端调试时会出错)
  • .getElementsByTagName()//标签名 最主流的用法

    • 里面可以写* var div = document.getElementsByTagName('*')[0]; 可以选择所有标签
  • getElementsByName()//需注意,以前版本的浏览器只有部分标签name可生效(表单、表单元素、img、iframe) 指数据名

  • .getElementsByClassName()//类名->ie8和ie8以下的ie版本中没有,可以多个class一起(因为兼容性问题,所以使用比较少)

  • .querySelector()//css选择器 在ie7和ie7以下的版本中没有(基本不用)(缺点:实时性问题,选出来的元素不是实时的,第一次选出来了 之后的都是第一次的结果)

    • <div>
          <strong></strong>
      </div>
      <div>
          <span>
          	<strong class = "demo">123</strong>
          </span>
      </div>
      <script>
      	var strong = document.querySelector('div > span strong.demo')
      </script>
      
    • 选的是一个对象、如果不是在该方法生成的东西上更改,该静态写照不会更改

  • .querySelectorAll() //css选择器 在ie7和ie7以下的版本中没有(基本不用)(缺点:实时性问题,选出来的元素不是实时的)

    • 选的是一组,会放在类数组里

所有的div被封装在类数组里并排序 dom对象

var div = document.getElementsByTagName('div')[0];//拿第一个div
改(插入)

小驼峰代替属性名的-

div.style.width = '100px';
div.style.height = '100px';
div.tyle.backgroundColor = 'red';
  • PARENTNODE.appendChild(); 【常用】

    • var div = document.getElementsByTagName('div')[0];
      var text = document.createTextNode('海');
      var span = document.createElement('span');
      div.appendChild(text);
      div.appendChild(span);  
      var text1 = document.createTextNode('demo');
      span.appendChild(text1);
      span.appendChild(text);//原来的位置没了,到span里了
      
    • 是一种剪切操作

  • PARENTNODE.insertBefore(a,b);【常用】

    • insert a before b
    • 在parentnode里的b之前插入a
为标签添加事件:
div.onclick = function () {
   
    this.style.backgroundColor = 'green';
}
//改进 反复点击
var count = 0;
div.onclick = function () {
   
    count ++;
    if(count % 2 == 1) {
   
        this.style.backgroundColor = 'green';
    }else{
   
        this.style.backgroundColor = 'red';
    }
}

点击三个按钮事件(选项卡)

<style>
    .wrapper div{
    
        width: 100px;
        height: 100px;
        border: 2px solid black;
        display: none;
    }
    .active {
    
        background-color: yellow;
    }
</style>
<div class="wrapper">
    <button class="active">111</button>
    <button>222</button>
    <button>333</button>
    <div class="content" style="display: block;" >小海</div>
    <div class="content">小小海</div>
    <div class="content">小小小海</div>
</div>
<script>
    var btn = document.getElementsByTagName('button');
    var div = document.getElementsByClassName('content');

    for(var i = 0; i < btn.length; i++) {
    
        (function(n){
    
            btn[n].onclick = function() {
    

                for(var j = 0; j < btn.length; j ++) {
    
                    btn[j].className = "";
                    div[j].style.display = "none";
                }
                this.className = "active";
                div[n].style.display = "block";
            }
        }(i))
    }
</script>
  • document.createElement(); 增加一个元素节点【常用】
    • 创建div标签 JavaScript拿着,还没有放在页面里
    • document.body.appendChild(div);
  • document.createTextNode();增加文本节点
  • document.createComment();
  • document.createDocumentFragment();

增加一个div,移动并控制它

<button style = "width:100px;height:50px;background:linear-gradient(to left, #999, #000, #432, #fcc);"position: fixed; right:0;top: 50%;>加速</button>

var btn = document.getElementByTagName('button')[0];
var div = document.createElement('div');
document.body.appendChild(div);
div.style.width = '100px';
div.style.height = '100px';
div.style.backgroundColor = 'red';
div.style.position = 'absolute';
div.style.left = '0';
div.style.top = '0';
var speed = 1;

var timer = setInterval(function () {
   
    speed += speed/10;
    div.style.left = parseInt(div.style.left) + speed + 'px';
    div.style.top = parseInt(div.style.top) + speed + 'px';
    if(parseInt(div.style.top) > 200 && parseInt(div.style.left) > 200){
   
        clearInterval(timer);//清除定时器
    }
}, 100);//定时器 每隔100ms执行该函数

var time = new Date().getTime();//得到时间片
var aa = 5;
//计数器计数 加加/减减/归零
btn.onclick = function () {
   
    aa ++;
}
//绑定小事件 会传递一个事件对象进来,包含了所有事件信息 可以监听键盘
document.onkeydown = function(e) {
   
    switch(e.case) {
   
        case 38:
            div.style.top = parseInt(div.style.top) - aa +'px';
            break;
        case 37:
            div.style.left = parseInt(div.style.left) - aa + 'px';
            break;
        case 39:
            div.style.left = parseInt(div.style.left) + aa + 'px';
            break;
        case 40:
            div.style.top = parseInt(div.style.top) + aa + 'px';
    }
    new Date.getTime()-time;
}

格子上画画

<!DOCTYPE html>
<html lang="en">
<head>
    <style>
        *{
    
            margin : 0;
            padding : 0;
        }
        li {
    
            float: left;
            width: 20px;
            height: 20px;
            border: 1px solid black;
            box-sizing: border-box;
        }
        ul {
    
            list-style: none;
            width: 200px;
            height: 200px;

        }
    </style>
</head>
<body>
    <ul>
        <li img-date = '0'></li>
        </!--一百个>
    </ul>
    <script>
        var ul = document.getElementsByTagName('ul')[0];
        ul.onmouseover = function(e) {
    
            var event = e || window.event;//找事件对象 兼容性
            var target = event.target || event.srcElement;  //找事件元对象 target 就是li
            target.style.backgroundColor = 'rgb(0, 255,' + target.getAttribute('img-date') +')';
            target.setAttribute('img-date',parseInt(target.getAttribute('img-date')) + 15);
        }
    </script>
</body>
</html>
  • parent.removeChild();【常用】
    • 父节点删除子节点(谋杀
    • var ii = div.removeChild(i); —>i里保存的是移除的标签
  • child.remove();【常用】
    • 自己删除自己(自杀
    • 不会有标签保存移除的标签 es5新方法,是真正的销毁
替换
  • parent.replaceChild(new,orgin);
    • 拿新的元素替换老的元素
遍历树
<div>
    <strong>
    	
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值