咸鱼前端—js 获取元素

我们想要操作页面上的某部分(显示/隐藏,动画),需要先获取到该部分对应的元素,才进行后续操作

根据id获取元素

根据id属性的值获取元素,返回来的是一个元素对象

var div = document.getElementById('main');     //ID的名字
console.log(div);
// 获取到的数据类型 HTMLDivElement,对象都是有类型的
// HTMLDivElement <-- HTMLElement <-- Element  <-- Node  <-- EventTarget

id名具有唯一性,部分浏览器支持直接使用id名访问元素,但不是标准方式,不推荐使用。

案例:点击按钮弹出对话框

<input type="button" value="xianyu" id="btn1"/>
//根据id属性的值从整个文档中获取这个元素(标签)
//为该元素注册点击事件
document.getElementById("btn1").onclick=function () {
  alert("咸鱼王我当定了");
};
</script>
根据标签名获取元素

根据标签名字获取元素,返回来的是一个伪数组,里面保存了多个的DOM对象

var xia = document.getElementsByTagName('p');  //标签的名字
for (var i = 0; i < divs.length; i++) {
  var div = xia[i];
  console.log(xia);
}

案例:点击按钮,修改多个p标签的显示内容

<input type="button" value="666" id="btn"/>
<div>
  <p></p>
  <p></p>
  <p></p>
  <p></p>
  <p></p>
</div>
<script>
  document.getElementById("btn").onclick=function () {
    //根据标签名字获取标签
    var pDom= document.getElementsByTagName("p");    
    //循环遍历这个数组
    for(var i=0;i<pDom.length;i++){
      //每个p标签,设置文字
      pDom[i].innerText="555";
    }
  };
根据name获取元素

根据name属性的值获取元素,返回来的是一个伪数组,里面保存了多个的DOM对象

var inputs = document.getElementsByName('xianyu');
for (var i = 0; i < inputs.length; i++) {
  var input = inputs[i];
  console.log(input);
}

案例:点击按钮,修改多个p标签的显示内容

<input type="button" value="按钮"  id="btn"/>
<div>
    <p name="xianyu"></p>
    <p name="xianyu"></p>
    <p name="xianyu"></p>
    <p name="xianyu"></p>
    <p name="xianyu"></p>
</div>
<script>
    document.getElementById("btn").onclick=function () {
        //根据name获取
        var pDom= document.getElementsByName("xianyu");
        //循环遍历这个数组
        for(var i=0;i<pDom.length;i++){
            //每个p标签,设置文字
            pDom[i].innerText="666";
        }
    };
</script>
根据类名获取元素

根据类样式的名字来获取元素,返回来的是一个伪数组,里面保存了多个的DOM对象

var mains = document.getElementsByClassName('main');
for (var i = 0; i < mains.length; i++) {
  var main = mains[i];
  console.log(main);
}

通过class获取,不兼容IE8及以下

根据选择器获取元素

根据选择器获取元素,返回来的是一个元素对象

var text = document.querySelector('#text');
console.log(text);

根据选择器获取元素,返回来的是一个伪数组,里面保存了多个的DOM对象

var boxes = document.querySelectorAll('.box');
for (var i = 0; i < boxes.length; i++) {
  var box = boxes[i];
  console.log(box);
}
根据节点获取元素
var test = document.getElementById("test");
var parent = test.parentNode; // 父节点
var chils = test.childNodes; // 全部子节点
var first = test.firstChild; // 第一个子节点
var last = test.lastChile; // 最后一个子节点 
var previous = test.previousSibling; // 上一个兄弟节点
var next = test.nextSibling; // 下一个兄弟节点

案例:通过节点操作隔行变色

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">

        ul {
            padding: 0;
        }

        li {

            list-style: none;
        }

    </style>
</head>
<body>
<input type="button" value="变色" id="btn"/>
<ul id="uu">
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
    <li>7</li>
    <li>8</li>
</ul>

<script>
    var my$=function(id){
        return document.getElementById(id);
    }
    //隔行变色--li
    my$("btn").onclick = function () {
        var count=0;//记录有多少个li
        //获取ul中所有的子节点
        var nodes = my$("uu").childNodes;
        for (var i = 0; i < nodes.length; i++) {
            //判断这个节点是不是li标签
            if (nodes[i].nodeType == 1 && nodes[i].nodeName == "LI") {
                nodes[i].style.backgroundColor=count%2==0?"red":"yellow";
                count++;//8个

            }
        }
    };
</script>
</body>
</html>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼桨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值