webApi,获取DOM元素,设置文本内容,设置元素的样式,定时器的使用

217 阅读3分钟

1.webApi

1.api

应用程序编程接口

编程语言预先给我们提供好的一系列的方法

2.web api

(浏览器提供的一系列用于操作浏览器和网页元素的方法)

bom

dom

3.DOM

(文档对象模型)

DOM会把页面中所有的内容都在内存中对应的成一个一个的对象

文档 document 整个网页

节点 node 页面中所有的内容

element: 标签节点

2.获取DOM元素

1.通过选择器获取一个元素(querySelector)

         document.querySelector('.animated') 

上下文可以是document,也可以是一个元素 参数是选择器,如:”div .className” 返回值只获取到第一个元素

2.通过选择器获取一组元素(querySelectorAll)

document.querySelector('.animated')

参数是选择器,如:”div .className” 返回值是一个类数组

3.通过ID获取(getElementById)

document.getElementById('id')

参数是string类型,是获取元素的id 返回值只获取到一个元素,没有找到返回null

4.通过标签名(getElementsByTagName)

let obj = document.getElementsByTagName('div');
for(let i = 0; i<obj.length; i++){
        obj[i].onclick = function(e){
            console.log(i)
        }
    }

上下文可以是document,也可以是一个元素,注意这个元素一定要存在 参数是是获取元素的标签名属性,不区分大小写 返回值是一个类数组,没有找到返回空数组

5.通过类名(getElementsByClassName)

var obj1 = document.getElementsByClassName('animated')

参数是元素的类名 返回值是一个类数组,没有找到返回空数组

3.设置文本内容

1.document.wirte

document.write是直接写入到页面的内容流,如果在写之前没有调用document.open, 浏览器会自动调用open

每次写完关闭之后重新调用该函数,会导致页面被重写

2.dom.innerHTML

innerHTML则是DOM页面元素的一个属性,可以用来读、写给定元素里的HTML内容

你可以精确到某一个具体的元素来进行更改

如果想修改document的内容,则需要修改document.documentElement.innerElement

3.dom.innerText

获取从起始位置到终止位置的内容,但它去除Html标签 

火狐浏览器不支持该标签,但所有浏览器都支持 innerHTML标签

4.总结:

innerHTML是符合W3C标准的属性,而innerText只适用于IE浏览器(现在也适应chrome浏览器)

因此,尽可能地去使用 innerHTML,而少用innerText

如果要输出不含HTML标签的内容,可以使用innerHTML取得包含HTML标签的内容后

再用正则表达式去除HTML标签

write会导致页面重新绘制,而且性能略低于innerHTML,所有推荐使用innerHTML.

element.innerText和element.innerHTML区别示例:

<div>我叫小王</div>
<button>改名</button>
<script>
    let nav = document.querySelector("div");
	let btn = document.querySelector("button");
	btn.onclick = function(){
		nav.innerHTML = "我叫<strong>陈实</strong>";
        // 包括html标签,因此陈实会加粗显示
        
		nav.innerText = "我叫<strong>陈实</strong>";
        // 不会加粗显示,会去除html标签,输出:我叫<strong>陈实</strong>
	}
</script>

4.设置元素的样式

1.dom.style

用于设置或获取DOM对象的style样式

        <script>
		    let obj = document.getElementById('one'); // 通过id获取div
		    obj.style.width = '500px';                // 通过style修改各种属性
		    obj.style.height = '300px';
		    obj.style.backgroundColor = 'gray';
		    obj.style.fontSize = '20px';
		    obj.style.color = '#fff';
		    obj.style.border = 'solid 5px red';
		    obj.style.display = 'block';          //设置DOM对象的显示和隐藏
		</script>

2.dom.className

用于设置或获取DOM对象的类样式

	<script>
	    let obj = document.getElementById('one');
	    console.log(obj.className);                // 修改前 first
	    obj.className = 'two';
		console.log(obj.className);                // 修改后 two
	</script>

3.dom.classlist

Element.classList 是一个只读属性,返回一个元素的类属性的实时DOMTokenList 集合

使用 classList 是替代element.className作为空格分隔的字符串访问元素的类列表的一种方便的方法

1、添加 add( String [, String] )

  添加指定的类值

  - 添加一个类:Element.classList.add("className1");

  - 添加多个类:Element.classList.add("className1","className2");

2、删除 remove( String [,String] )

  删除指定的类值,如果指定的类不存在,则不执行任何操作

  - 删除一个类:Element.classList.remove("className1");

  - 删除多个类:Element.classList.remove("className1","className2");

3、切换toggle(String[,force])

- 当只有一个参数的时,切换class value ,即如果类存在,删除它,并返回false
如果类不存在,则添加它并返回true

- 当存在第二个参数时,如果第二个参数的计算结果为true,则添加指定的类值,如果计算结果为false,则删除它

4、查询 contains( String )

  检查元素的类属性中是否存在指定的类,其返回值为true或者false

  - 查询指定的类:Element.classList.contains("className1");

5、替换 replace( oldClass, newClass )

    用一个新类替换已有类,如果指定的类不存在,则不执行任何操作

  - 替换成指定类:Element.classList.replace("oldClass","newClass");

6、索引查询 item ( Number )

  按集合中的索引返回类值

5.定时器

1.setInterval() 的使用

setInterval():循环调用

将一段代码,每隔一段时间执行一次(循环执行)

参数:

参数1:回调函数,该函数会每隔一段时间被调用一次

参数2:每次调用的间隔时间,单位是毫秒

返回值:返回一个Number类型的数据。这个数字用来作为定时器的唯一标识,方便用来清除定时器

2.定义定时器

**方式一:**匿名函数

每间隔一秒,将 数字 加1:

    let num = 1;
   setInterval(function () {
       num ++;
       console.log(num);
   }, 1000);

方式二:

每间隔一秒,将 数字 加1:

    setInterval(fn,1000);
       num ++;
       console.log(num);
    }

3.清除定时器

定时器的返回值是作为这个定时器的唯一标识,可以用来清除定时器

具体方法是:假设定时器setInterval()的返回值是参数1,那么clearInterval(参数1)就可以清除定时器

<script>
    let num = 1;
    const timer = setInterval(function () {
        console.log(num);  //每间隔一秒,打印一次num的值
        num ++;
        if(num === 5) {  //打印四次之后,就清除定时器
            clearInterval(timer);
        }
    }, 1000);
</script>