DOM元素操作

获取元素、控制元素、控制元素隐藏显示、标签切换


获取元素

  • 通过id名获取 获取的是单个元素 getElementById()

    var btn=document.getElementById('btn')
    
  • 通过标签名获取 获取的是数组 getElementByTagName()

    var btns=document.getElementsByTagName('button')
    //用法
    btns[0].onclick=function(){
      
    }
    var btns=document.getElementsByTagName('button')[0]
    
  • 通过class名获取元素 获取的是数组 getElementsByClassName()

    var spans=document.getElementsByClassName('span')[0]
    
  • 通过name获取 获取的是数组 getElementsByName()

    var inps=document.getElementsByName("user");
    
  • 通过选择器 获取的是单个元素 querySelector()

    var p1=document.querySelector('.p1');
    
  • 通过选择器 获取所有的元素 数组 querySelectorAll()

    var button=document.querySelectorAll('button');
    
  • 通过父元素获取子元素 父元素.xxxx()

    var father=document.querySelector(".father");
    var bigSon=father.getElementsByTagName('p')[0];
    

获取、设置标签的属性

只能获取或者设置行间的属性

  • 获取

    元素.属性名

    console.log(bigSon.style.backgroundColor);
    
  • 设置

    元素.属性名=属性值

    bigSon.style.backgroundColor="pink";
    
  • 通过value的值获取标签的值、

    console.log(inps[0].value);
    
  • 练习

    // =======================demo=======================
    // 1. 获取元素
    var input=document.getElementsByTagName("input")[0];
    var btn=document.getElementsByTagName("button")[0];
    var p=document.getElementsByClassName("p1")[0];
    console.log(input,btn,p);
    
    // 指定点击事件
    btn.onclick=function(){
      // 点击事件执行代码
      // 将表单内容赋值为p标签
      // 1. 获取表单内容
      var v=input.value;
      // value是获取或者设置表单的内容
      // innerHTML获取或者设置其他标签的内容
      p.innerHTML="您输入的用户名是:"+v;
      console.log(p.innerHTML);
    }
    

控制元素

btn绑定点击事件控制div变色

var div=document.getElementsByTagName('div')[0];
var btn=document.querySelector('button');
// btn绑定点击事件控制div变颜色
btn.onclick=function(){
  // 判断div的初始颜色 如果是红色 变成绿色
  if(div.style.backgroundColor=='tomato'){
    div.style.backgroundColor='green';
  }else{
    div.style.backgroundColor='tomato';
  }
}

控制元素隐藏显示

// 1. 获取元素
var btn=document.getElementsByTagName('button')[0];
var div=document.getElementsByClassName('box')[0];

/*===========通过样式控制元素显示隐藏===========*/
btn.onclick=function(){
  //如果显示 隐藏  如果隐藏 显示
  if(div.style.display=='block'){
    div.style.display='none';
  }else{
    div.style.display='block';
  }
}
// 1. 获取元素
var btn=document.getElementsByTagName('button')[0];
var div=document.getElementsByClassName('box')[0];
/*===========通过控制类名显示隐藏===========*/
btn.onclick=function(){
  // class 是保留字
  // 获取行间的class属性 通过className获取
  console.log(div.className);
  if(div.className=="box block"){
    div.className="box none";
  }else{
    div.className="box block";
  }
}

计算器

<script>
    // 1.获取元素
    var num = document.getElementsByName('num');
    var select = document.getElementsByTagName('select')[0]
    var btn = document.getElementsByTagName('button')[0];
    var sum = document.getElementsByTagName('span')[0];

    btn.onclick = function () {
        // 1. 输入的内容不能为空
        if (num[0].value === "" || num[1].value === "") {
            alert("输入内容不能为空");
        } else if (Number(num[0].value) + '' == NaN + '' || Number(num[0].value) + '' == NaN + '') {
            // 2. 输入的内容必须是数字 
            alert("输入的不是数字 计算个锤子啊!");
        } else{
            // 3. 正常情况   
            //    将表单获取的值转为数字
            var x = num[0].value * 1;
            var y = num[1].value * 1;
            // console.log(num[0].value,num[1].value,select.value);
            //判断你选则的运算符
            switch (select.value) {
                case '+':
                    sum.innerHTML = '计算结果:' + (x + y);
                    break;
                case '-':
                    sum.innerHTML = '计算结果:' + (x - y);
                    break;
                case 'x':
                    sum.innerHTML = '计算结果:' + (x * y);
                    break;
                case '/':
                    sum.innerHTML = '计算结果:' + (x / y);
                    break;

            }
        }
    }
</script>

标签切换页面

this谁绑定事件就代表谁

<body>
    <ul class="nav">
        <li>第一个</li>
        <li>第二个</li>
        <li>第三个</li>
    </ul>
    <div>one</div>
    <div>two</div>
    <div>three</div>
</body>
<script>
    var one = document.getElementsByTagName('li');
    var div = document.getElementsByTagName('div');
    // var 全局变量
    // let 局部变量
    // 通过for循环遍历 统一绑定事件
    for (var i = 0; i < one.length; i++) {
        // 自定义属性
        one[i].index = i;
        one[i].onclick = function () {
            //样式初始化
            for (var j = 0; j < one.length; j++) {
                one[j].style.backgroundColor = 'gray';
                div[j].style.display = 'none';
            }
            /***************************
            this 谁绑定事件this就代表谁
            ***************************/
            console.log(this.index);
            div[this.index].style.display = 'block';
            this.style.backgroundColor = 'black';
        }
    }
</script>

鼠标移入效果

用法:标签选择器:hover{样式代码}

  1. 直接在悬浮元素上改变当前元素本身的样式;

    #div1 {
      height: 300px;
      width: 300px;
      background: red;
    }
    #div1:hover{background: pink;}
    
  2. 改变当前元素子级元素的样式

    #div1 {
      height: 300px;
      width: 300px;
      background: red;
    }
    #div2 {
      height: 100px;
      width: 100px;
      background: green;
    }
    #div1:hover>#div2{background: yellow;}
    
    <div id="div1">
        <div id="div2"></div>
    </div>
    
    
  3. 改变与当前元素同级元素的样式

    #div1 {
      height: 300px;
      width: 300px;
      background: red;
    }
    #div1:hover{background: #00b38a}
    #div2 {
      height: 100px;
      width: 100px;
      background: green;
    }
    #div3{
      height: 50px;
      width: 50px;
      background:blue;
    }
    #div1:hover #div3{background: black}
    
    <div id="div1">1
        <div id="div2">2
            <div id="div3">3</div>
        </div>
    </div>
    
  4. 改变就近元素的样式

    #div1 {
      height: 300px;
      width: 300px;
      background: red;
    }
    #div2 {
      height: 200px;
      width: 200px;
      background:blue;
    }
    #div1:hover+#div2{background: pink}
    
    <div id="div1">1 </div>
    <div id="div2">2</div>
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值