基础知识(js-web-api)

一、DOM(document object model)

//获取元素
var div1 = document.getElementById('div1')
var div2 = document.getElementsByTagName('div')
var div3 = document.getElementsByClassName('content')
var div4 = document.querySelectorAll('p')

//设置、获取style,以下为property形式,修改对象属性,尽量使用这种方式
div1.style.width = '20px'
console.log(div1.style.width)

//获取、设置class名称,以下为attribute形式,修改html属性
console.log(div1.className)
div1.className = 6
console.log(div1.getAttribute('class'))
div1.setAttribute('class', 5)

//获取节点类型
console.log(div1.nodeName)
console.log(div1.nodeType)

//操作节点
var div = document.createElement('div')    //新增
var span = document.createElement('span')
span.innerHTML = 'hello'
div.appendChild(span)    //插入

var div5 = document.getElementById('div1')
div.appendChild(div5)       //获取已有节点,然后移动已有节点

div1.childNodes    //获取子元素
div1.parentNode    //获取父元素

注意:减少dom查询

//不采用,耗费性能
for(var i = 0; i< 5;i++){
    var div = document.createElement('div')
    div.innerHTML = 'hello'
    p.appendChild(div)
}

//不采用,耗费性能
for(var i = 0; i < document.getElementById('1').length; i++){
    console.log(1)
}

//采用,一次性插入性能好
var li = document.createDocumentFragment()
for(var i = 0; i< 5;i++){
    var div = document.createElement('div')
    div.innerHTML = 'hello'
    li.appendChild(div)

}
div1.appendChild(li)

//采用,缓存性能好
var length = document.getElementById('1').length
for(var i = 0; i < length; i++){
    console.log(1)
}

 

二、BOM(browser object model)

主要有navigator、screen、location、history

//navigator
let ua = window.navigator.userAgent
let ischrome = ua.indexOf('Chrome')
console.log(ischrome)

//screen
console.log(window.screen.width)
console.log(window.screen.height)

//location
console.log(location.href)    //地址https://www.baidu.com/s?wd=window    
console.log(location.protocol) //域名https
console.log(location.pathname)   //地址路径/s
console.log(location.search)   //参数?wd=window
console.log(location.hash)    //hash路由

//history
history.back()    //后退
history.forward()    //前进

 

三、事件

主要有事件绑定,事件冒泡,事件代理

请查看前端面试题 16、17、18题

 

四、ajax

XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

每当 readyState 改变时,就会触发 onreadystatechange 事件,readyState 属性存有 XMLHttpRequest 的状态信息。

注意:// IE6, IE5 浏览器执行代码 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

//get请求
let http = new XMLHttpRequest()
http.open('get', '/web?fname=Henry', true)
http.onreadystatechange = function () {
    if (http.readyState == 4) {
        if (http.status == 200) {
            console.log(http.responseText)
        }
    }
}
http.send()

//post请求
let xmlhttp = new XMLHttpRequest()
xmlhttp.open("POST","/try/ajax/demo_post2.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");

跨域:为了安全,当ajax请求的时候,浏览器要求当前网页和server必需同源

同源:协议、域名、端口三者必需一致(比如http://a.com.cn:8088/和http://b.com.cn/index)

可以跨域的HTML元素有:

img.src = '跨域的图片'    //可以统计打点,可使用第三方统计服务
<link href = '跨域的css'>    //可以使用CDN
<script src = '跨域的js'></script>    //可以使用cdn,可实现jsonp
//jsonp

window.callback = function (data) {
    console.log(data) //打印{name: hello}
}
<script src='http://a.com/a.js'></script> //js返回callback({name: hello})

 

五、存储

主要有cookie、localStorage、sessionStorage

cookie主要用于本地和服务器通信,请求中会带上cookie,存储大小,最大4kb,api 是 document.cookie 

localStorage 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除。

sessionStorage 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值