文章目录
通过DOM获取元素
通过id名、class名、标签名、name获取元素
- 通过id名 document.getElementById(‘id名’)
- 通过class名 document.getElementsByClassName(‘class名’);
 通过这种方式获取的是一个伪数组
- 通过标签名 document.getElementsByTagName(‘标签名’);
 通过这种方式获取的是一个伪数组
- 通过name(多用于表单,但是不常用) document.getElementsByName(‘name’)
<body>
    <p id="text">通过id</p>
    <span>通过标签名1</span><br>
    <span>通过标签名2</span><br>
    <i class="tip">通过类名</i><br>
    <i class="tip">通过类名2</i><br>
    <input type="button" value="通过name" name="byName"><br>
    <em name="byName">通过name2</em>
</body>
<script>
    // 通过id
    var oText = document.getElementById('text');
    console.log(oText);
    // 通过标签名
    var oSpan = document.getElementsByTagName('span');
    console.log(oSpan);
    console.log(oSpan[0]);
    console.log(oSpan[1]);
    // 通过类名
    var oTip = document.getElementsByClassName('tip');
    console.log(oTip);
    console.log(oTip[0]);
    console.log(oTip[1]);
    // 通过name
    var byName = document.getElementsByName('byName');
    console.log(byName);
    console.log(byName[0]);
    console.log(byName[1]); 
</script>
通过选择器
- document.querySelector() 只可以获取一个元素
- document.querySelectorAll( ) 可以获取多个元素
 获取一个伪数组
<body>
    <div class="div1">通过选择器获取1</div>
    <div id="div2">通过选择器获取2</div>
    <span>通过选择器获取3</span>
    <span>通过选择器获取4</span>
</body>
<script>
    // class名
    var oDiv1 = document.querySelector('.div1');
    console.log(oDiv1);
    // id名
    var oDiv2 = document.querySelector('#div2');
    console.log(oDiv2);
    // 标签名
    var oTag = document.querySelector('span');
    console.log(oTag);  // 只获取第一个
    // 获取多个
    var oTag2 = document.querySelectorAll('span');
    console.log(oTag2);
    console.log(oTag2[0]);
    console.log(oTag2[1]);
</script>
两种方式获取元素的区别
通过选择器获取的多个元素返回的是一个节点的集合,而另外一种方式获取的多个元素是一个html元素的集合
节点 node
节点分为元素节点、属性节点、文本节点。
- 元素节点就是html元素,简单来说就是一个html标签。
- 属性节点是标签的属性,如clss、id、alt…
- 文本节点就是指一些文本内容
nodeType
返回节点类型
 用法:对象.nodeType
结果:
- 元素节点返回1
- 属性节点返回2
- 文本节点返回3
- 注释节点返回8
<body>
    <h3 id="title">节点</h3>
    <h2><!-- 注释节点 -->
        
        </h2>
</body>
    <script>
        var title = document.getElementsByTagName('h3')[0];
        console.log(title.nodeType);  // 1
        console.log(title.getAttributeNode('id').nodeType);  // 2
        console.log(title.firstChild.nodeType);  // 3
		var zhushi = document.getElementsByTagName('h2')[0];
        console.log(zhushi.firstChild.nodeType);   // 8
	 </script>
nodeName
返回节点的名称
 结果:
- 元素节点:返回大写的标签名
- 属性节点:返回属性名
- 文本节点:返回#text
- 注释节点:返回#comment
<body>
    <h3 id="title">节点</h3>
    <h2><!-- 注释节点 -->
        
        </h2>
</body>
    <script>
        var title = document.getElementsByTagName('h3')[0];
        console.log(title.nodeName);  // H3
        console.log(title.getAttributeNode('id').nodeName);  // id
        console.log(title.firstChild.nodeName);  // #text
        var zhushi = document.getElementsByTagName('h2')[0];
        console.log(zhushi.firstChild.nodeName);  // #comment
    </script>
nodeValue
返回节点值(节点的内容)
 结果:
- 元素节点:null
- 属性节点:返回属性值
- 文本节点:返回文本内容
- 注释节点:返回注释内容
<body>
    <h3 id="title">节点</h3>
    <h2><!-- 注释节点 -->
        
        </h2>
</body>
    <script>
        var title = document.getElementsByTagName('h3')[0];
        console.log(title.nodeValue);  // null
        console.log(title.getAttributeNode('id').nodeValue);  // title
        console.log(title.firstChild.nodeValue);  // 节点
        var zhushi = document.getElementsByTagName('h2')[0];
        console.log(zhushi.firstChild.nodeValue);  // 注释节点 
    </script>
元素属性
- getAttribute(‘属性名’)
 获取元素的属性(行内),返回属性值
- setAttribute(‘属性名’,‘属性值’)
 可以新创建一个属性,也可以直接修改原有的属性
- removeAttribute(‘属性名’)
 移除属性
- creatAttribute(‘属性名’)
 创建属性
<body>
    <div class="box" id="box">
        <input type="button" value="切换" id="change">
        <input type="button" value="新增" id="add">
        <input type="button" value="删除" id="del">
        <img src="../../../练习/掌趣/img/292 (1).jpg" id="img">
    </div>
</body>
<script>
    // 获取元素
    var box = document.getElementById('box');
    var change = document.getElementById('change');
    var add = document.getElementById('add');
    var del = document.getElementById('del');
    var img = document.getElementById('img');
    console.log(box.getAttribute('class'));
    del.onclick = function () {
        box.removeAttribute('class');
    }
    var flag = 1;
    change.onclick = function () {
        if(flag){
            img.setAttribute('src', '../../../练习/掌趣/img/295.jpg');
            flag = 0;
        }else{
            img.setAttribute('src', '../../../练习/掌趣/img/292 (1).jpg');
            flag = 1;
        }
    }
    // 创建属性
    var newAttr = document.createAttribute('index');
    newAttr.value = '新属性';
    add.onclick = function () {
        img.setAttribute('alt', '这是图片');
        img.setAttributeNode(newAttr);
    }
</script>
总结
累了累了,明天还要早起,歇了。。。。。。。










