JavaScript DOM编程基础

一.什么是DOM?

  文档对象模型,是W3C组织推荐的处理课扩展标记语言的标准编程。

  1.2 DOM树

   当网页被加载时,浏览器会创建页面的文档对象模型,被结构化的称为对象树。

   

HTML DOM 是 HTML 的标准对象模型和编程接口。它定义了:

  • 作为对象的 HTML 元素

  • 所有 HTML 元素的属性

  • 访问所有 HTML 元素的方法

  • 所有 HTML 元素的事件

 注意事项:DOM把以上内容都看做是对象  

二、查找 HTML DOM 元素[标签,属性,文本内容]

   

2.1 getElementByID()

使用getElementById()方法可以获取带有ID的元素对象

<div id="oDiv">zking zz is a nice man</div>
<script type="text/javascript">
    var oDiv = document.getElementById('oDiv');
    console.log(oDiv)
</script>


2.2 getElementsByTagName()

使用getElementsByTagName()方法可以返回带有指定标签名的对象集合。

document.getElementsByTagName('标签名')

 还可以获取某个元素(父元素)内部所有指定标签名的子元素。

element.getElementsByTagName('标签名');

 

2.3 getElementsByName()

getElementsByName() 方法可返回带有指定名称的对象的集合。

getElementsByName() 方法可返回带有指定名称的对象的集合。

 

2.4 通过HTML5新增的方法获取

//根据类名返回元素对象集合
document.getElementsByClassName('类名');

 //根据指定选择器返回第一个元素对象 切记 里面的选择器需要加符号
document.querySelector('选择器');

 //根据指定选择器返回
document.querySelectorAll('选择器');

 

2.5 获取特殊元素(body、html)

获取body元素

document.body

 获取html元素

document.documentElement;

 

三、改变 HTML 元素【内容】

JavaScript的DOM操作可以改变网页内容,结构和样式,我们可以利用DOM操作元素来改变元素里的内容,属性等操作。注意以下的是属性:

方法描述
element.innerHTML = new html content改变元素的 HTML 内容
element.innerTEXT = new text改变元素的文本内容
element.attribute = new value改变 HTML 元素的属性值
element.setAttribute(attribute, value)改变 HTML 元素的属性值
element.hasAttribute(attribute)判断元素是否有该属性
element.removeAttribute(attribute)删除元素属性
element.style.property = new style改变 HTML 元素的样式

 

3.1 element.innerHTML

元素属性 innerHTML 就是元素的 HTML 代码,当查找到元素后,可以对其 innerHTML 属性进行重新赋值修改。

<div>
    <h1>Hello World</h1>
</div>
<script>
    var h1 = document.querySelector("div");
    // 将原本的div里边的所有HTML内容更改,如果没有子元素,InnerHTML 就会修改该元素下的 Text 内容
    h1.innerHTML = "<h2>2020-05-05</h2>";
</script>

// 输出结果
2020-05-05

 

3.2 element.innerText

<h1>Hello World</h1>
<script>
    var h1 = document.querySelector("h1");
    // 只更改文本,HTML 不解析,同时去除空格和换行
    h1.innerText = "<h2>2020-05-05</h2>    ABC";
</script>

// 输出结果
<h2>2020-05-05 ABC</h2>

 

3.3 element.attribute 改变元素属性值

这里的 attribute 是代词,具体要看元素有什么属性,比如 a 链接就有 href 属性,所以使用的时候需要用 element.href 来改变。

<div>
    <a href="https://www.163.com">网址</a>
</div>

<script>
    var a = document.querySelector("a");
    a.href = "https://www.qq.com";
</script>

 

3.4 element.setAttribute 改变元素属性值

还可以通过 element.setAttribute 方法来改变元素属性值

element.setAttribute(attribute, value)

  • attribute:属性名

  • value:属性值

 

<div>
    <a class="hightlight" href="https://www.163.com">网址</a>
</div>

<script>
    var a = document.querySelector("a");
    a.setAttribute("href", "https://www.qq.com");
    // 用 .属性方法更改 class 属性使用 className
    // 注意空格,这里是增加一个class
    a.className += " hidden";  
    // 用 setAttribute 更改 class 属性直接用 class
    // 也可以直接写上两个属性
    a.setAttribute("class", "hightlight hidden");
</script>

 

常用元素属性

  • innerText

  • innerHTML

  • src

  • href

  • id, alt, title

3.5 element.hasAttribute

通过 element.hasAttribute 判断元素是否有指定属性

 <a href="index.php" data-index="1">123</a>
<script>
var d = document.querySelector("a");
// 返回 true
console.log(d.hasAttribute("href"));
</script>

 

3.6 element.removeAttribute

<a href="index.php" data-index="1">123</a>
<script>
var d = document.querySelector("a");
d.removeAttribute("data-index");
</script>

 

3.7 style.property 修改样式

使用元素中的 style 属性可以修改该元素的样式。如 a.style.fontSizea.style.display。修改的样式直接作用在行内CSS样式中,

  • 修改样式的属性名需要改写,将横杠从CSS属性名中去除,然后将横杠后第一个字母大写,如:background-color 写成 backgroundColor

  • 属性值都是字符串,设置时必须包括单位

<div>
    <a href="https://www.163.com">网址</a>
</div>

<script>
    var a = document.querySelector("a");
    a.style.fontSize = "24px";
</script>

控制元素隐藏与显示
// visibility属性    visible    表示元素是可见的    hidden    表示元素是不可见的
// object.style.visibility="值"
// display属性            none    表示此元素不会被显示    block    表示此元素将显示为块级元素,此元素前后会带有换行符
// object.style.display="值" 

通过类名切换背景

也可以通过

document.body.style.backgroundColor属性切换背景颜色

 <style>
    .cls {
        background-color: coral;
    }
</style>
<body>
    <button>切换</button>
    <script>
        var btn = document.querySelector("button");
        btn.addEventListener("click", function () {
            if (document.body.className == "") {
                document.body.className = "cls";
            } else {
                document.body.className = "";
            }
        });
    </script>
</body>

图片切换案例

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>图片切换</title>
        <script type="text/javascript">
            //数组的方式定义  保存所有的图片的名称
            var images = [
                "img/1.jpg",
                "img/2.jpg",
                "img/3.jpg",
                "img/4.jpg",
                "img/5.jpg"];
        
            var index = 0;
            
            //声明一个变量保存定时器
            var timer = null;
        
            
        
        
        
            //加载函数
            window.onload = function(){
                
                //获取图片标签   调用src重新赋值
                var oImg = document.querySelector("img");
                
                
                
                
                //封装一个函数 保存下一张的代码
                function next(){
                    index++;
                    if(index >= images.length){
                        index = 0;//归0
                    }
                    oImg.src = images[index];//0 1 2 3 4
                    console.log(index);
                }
                
                
                
                
                //手动点击下一张  进行切换
                var nextBtn = document.getElementById("nextBtn");
                //设置点击事件
                nextBtn.onclick = function(){
                    next();
                };
                
                //手动点击上一张  进行切换
                var backBtn = document.getElementById("backBtn");
                //设置点击事件
                backBtn.onclick = function(){
                    index--;
                    if(index < 0){
                        index = images.length-1;//归0
                    }
                    oImg.src = images[index];//0 1 2 3 4
                    console.log(index);
                };
                
                
                //自动切换的按钮
                var autoBtn = document.getElementById("autoBtn");
                autoBtn.onclick = function(){
                    window.clearInterval(timer);
                    //设置定时器
                    timer = window.setInterval(function(){
                        next();
                    },2000);
                };
                
                var closeBtn = document.getElementById("closeBtn");
                closeBtn.onclick = function(){
                    window.clearInterval(timer);
                }
            };
            
            
        </script>
    </head>
    <body>
        <!-- 调用src属性   对象.属性 -->
        <img src="img/1.jpg" alt="" width="300" height="300">
        <hr>
        <button id = "backBtn">上一张</button>
        <button id="nextBtn">下一张</button>
        <button id="autoBtn">自动切换图片</button>
        <button id="closeBtn">关闭切换图片</button>
        
    </body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值