美文网首页饥人谷技术博客
定时器&DOM(节点和选取API)

定时器&DOM(节点和选取API)

作者: YM雨蒙 | 来源:发表于2017-09-06 14:54 被阅读183次

1、下面这段代码输出结果是? 为什么?

var a = 1;
setTimeout(function(){
    a = 2;
    console.log(a);  //2
}, 0);
var a ;
console.log(a);  //1
a = 3;
console.log(a);  //3
// 1
// 3
// 2
setTimeout会被立刻放在任务队列,等待stack任务的完成,再来执行,
又由变量赋值知结果为1,3,2

2、下面这段代码输出结果是? 为什么?

var flag = true;
setTimeout(function(){
    flag = false;
},0)
while(flag){}
console.log(flag);
//结果是无限循环
因为setTimeout会被放在任务队列中,然后执行while,因为flag= true,
所以一直执行while(t){},不会执行console.log(flag)

3、实现一个节流函数

function throttle(fn, delay) {
    var timer = null
    return function(){
        clearTimeout(timer)
        timer = setTimeout(function(){ 
            fn(arguments)
        }, delay)
    }
}

4. 简单解释单线程、任务队列的概念

  • 单线程

    • 单线程模型指的是,JavaScript只在一个线程上运行。也就是说,JavaScript同时只能执行一个任务,其他任务都必须在后面排队等待。
    • JavaScript只在一个线程上运行,不代表JavaScript引擎只有一个线程。事实上,JavaScript引擎有多个线程,单个脚本只能在一个线程上运行,其他线程都是在后台配合。
  • 任务队列

    • 里面是各种需要当前程序处理的消息。新的消息进入队列的时候,会自动排在队列的尾端。
    • 运行线程只要发现消息队列不为空,就会取出排在第一位的那个消息,执行它对应的回调函数。等到执行完,再取出排在第二位的消息,不断循环,直到消息队列变空为止。
    • 另一种情况是setTimeout会在指定时间向消息队列添加一条消息。如果消息队列之中,此时没有其他消息,这条消息会立即得到处理;否则,这条消息会不得不等到其他消息处理完,才会得到处理。因此,setTimeout指定的执行时间,只是一个最早可能发生的时间,并不能保证一定会在那个时间发生。

5、列出DOM 元素选取的 API

getElementById()  //获取id
getElementsByClassName()  //获取class类名
getElementsByTagName()  //获取标签名
getElementsByName()  //获取有name属性的html元素
querySelector()  //选择器
querySelectorAll()  //选择所有选择器

6、如果创建元素、如何添加元素

创建元素
createElement()  //元素节点
createTextNode()  //文本节点
createDocumentFragment()
例如:
var li = document.createElement("li")
var content = document.createTextNode("我是li元素")
var a = document.createElement("a")
var con = document.createTextNode("我是链接")
添加元素
appendChild()  //添加元素
insertBefore()  //某个元素之前插入元素
replaceChild()  //要插入的元素和要替换的元素
例如:
var li = document.createElement("li")
var content = document.createTextNode("我是li元素")
var a = document.createElement("a")
var con = document.createTextNode("我是链接")
li.appendChild(content)
a.appendChild(con)
li.appendChild(a)

相关文章

  • 定时器&DOM(节点和选取API)

    1、下面这段代码输出结果是? 为什么? 2、下面这段代码输出结果是? 为什么? 3、实现一个节流函数 4. 简单解...

  • js初识第五节

    通过js来操作dom节点的属性 定时器setTimeout的使用和清除 定时器的异步特性 window的locat...

  • 学习笔记二|脚本化文档

    DOM概览 文档对象模型(DOM)是表示和操作HTML和XML文档内容的基础API。 选取文档元素 用指定的id属...

  • DOM(文档对象模型)

    问题 1、DOM是哪种基本数据结构?(树) 2、DOM操作常用API? 3、DOM节点的attr和property...

  • 【DOM】DOM的操作(增删改查)

    操作DOM的核心就是增删改查 参考: JavaScript DOM编程——API详解 目录 一、节点创建型API ...

  • Chrome DevTools

    概览 Element 第一部分:操作dom元素查看DOM树选取DOM节点操作DOM节点 第二部分查看界面样式修改界...

  • CSS选择器

    1.class 和 id 的使用场景? 两者都能选取DOM节点并给DOM节点添加样式,但是W3C标准里规定页面中只...

  • DOM操作

    1、dom对象的innerText和innerHTML有什么区别? a)innerText:获取的是选取节点里的内...

  • javascript-DOM基础

    理解1.包含不同层次节点的dom,使用不同的节点类型dom(文档对象模型)是针对html和xml文档的一个api,...

  • DOM

    DOM(文档对象模型)是针对HTML和XML文档的API,描绘了一个层次化的节点树 节点层次DOM可以将任何HTM...

网友评论

    本文标题:定时器&DOM(节点和选取API)

    本文链接:https://www.haomeiwen.com/subject/edxvjxtx.html