原生js操作网页
emmm
添加网页元素
移除网页元素
代码
<!DOCTYPE html><html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style>
div{
border: 1px solid black
width: 100px
height: 100px
text-align: center
}
</style>
<body>
<div>div1</div>
<div>div2</div>
<script>
var div = document.createElement("div")
div.innerText = "这是使用js添加的元素"
//添加一个div元素
document.body.appendChild(div)
alert("3秒后移除div1")
//移除html元素
setTimeout(function () {
var divList = document.getElementsByTagName("div")
divList[0].remove()
},3000)
</script>
</body>
</html>
这两个很基础,其实所有其他js库(jquery之类的)能做的事情原生js都能做。
作为一名程序猿,经常遇到回调函数的情况,原生js的回调函数是一层一层的嵌套调用,而es6提供了一种新的写法,Promise,它可以把原本的嵌套回调函数实现成横向的调用,即链式调用。下面看一个Promise的简单用法:
接着开始模拟:
首先,_Promise构造函数会接收一个函数resolver并执行,函数中又包含resolve和reject两个参数,然后,_Promise构造函数生成的实例有三种状态,分别是pending(初始值)、fullfilled(成功)和rejected(失败),且由pending变为成功或者失败后状态不可逆。
resolve和reject函数执行的时候会先判断状态,如果是pending则执行,且将状态变为fullfilled或者rejected,并将resolve/reject函数中参数传递给_result,以便then函数调用时使用。
因为有可能存在链式调用,所以执行then函数的返回值需要判断,如果isResolve或者isReject函数返回的是一个新的_Promise实例,则返回这个实例,否则返回当前实例
至此,Promise已经模拟完成~
原生键盘监听事件:按下一次按键,分为三个过程,按下—按住—松开onkeydown:某个键被按下
onkeypress:某个键盘的键被按下或按住
onkeyup:某个键盘的键被松开
使用方法,一般来说,键盘监听是直接在整个页面文档上进行监听的,也就是document上
以下是原生的使用案例
//实际使用
document.onkeydown=function(e){ //对整个页面文档监听
var keyNum=window.event ? e.keyCode :e.which //获取被按下的键值
//判断如果用户按下了回车键(keycody=13)
if(keyNum==13){
alert('您按下了回车')
}
//判断如果用户按下了空格键(keycode=32),
if(keyNum==32){
alert('您按下了空格')
}
}
剩下另外两个按键方法同理
jquery的方式监听键盘事件
jquery的也分为三个过程,但是在事件名称上有所不同
keyup:某个键盘的键被松开
keydown:某个键被按下
keypress:某个键盘的键被按下或按住