当前位置: 首页 > news >正文

JS进阶 - JS 、JS-Web-API与DOM、BOM

1.JS 与 JS-Web-API

常说的JS(浏览器执行的JS)有两部分:

(1) JS基础语法:ECMA 262 标准(规定基础语法,包括类型变量、原型、作用域、异步)
(2) JS-Web-API:W3C 标准 (定义用于浏览器中JS操作页面的API和全局变量,规定浏览器让开发者做的事情, W3C 没有规定JS相关基础语法)

浏览器运行JS既要遵循 ECMA 262 标准 又要遵循 W3C 标准

知识补充:

JS内置全局函数和对象:
全局对象:window,document等 
全局变量:所有未定义可以直接用的全局变量,例:navigator(var ua = navigator.userAgent 获取浏览器特性)

2.DOM(文档对象模型 Document Object Model)

XML:可扩展的描述语言,描述结构化数据(标签名自定义,数据结构是树)
HTML:XML的特殊类型(HTML代码就是一个字符串)

DOM的基本数据结构:树
DOM的本质:浏览器把拿到的HTML代码结构化成浏览器可识别,JS可识别可操作的模型

DOM节点操作:

(1) 获取DOM节点:

    var div1 = document.getElementById('div1') //获得元素
    var divList = document.getElementsByTagName('div') //获得集合(JS对象)
    console.log(divList[0])
    var containerList = document.getElementByClassName('.container') //获取集合
    var pList = document.querySelectorAll('p') // 获取集合

(2) prototype JS对象属性获取与修改:

    var pList = document.querrySelectorAll('p')
    var p = PList[0]
    cosnole.log(p.style.width) // 获取样式
    p.style.width = '100px' //修改样式
    console.log(p.className) //获取className
    p.className = 'p1' //修改className

(3)Attribute HTML文档标签属性获取与修改:

    var pList = document.querySelectorAll('p')
    var p = pList[0]
    p.getAttribute('data-name')
    p.setAttribute('dataname','immoc')
    p.getAttribute('style')
    p.setAttribute('style','font-size:30px')

DOM结构操作:

(1) 新增节点:

    var div1 = document.getElementById('div1')
    
    方法1 - 添加新节点:
    var p1 = document.creatElement('p')
    p1.innerHTML = 'this is p1'
    div1.appendChild(p1) //添加新创建的元素
    
    方法2 - 移动已有节点(原先位置不再存在该节点):
    var p2 = document.getElementById('p2')
    div1.appendChild(p2)
    
(2) 获取父元素:
 
    var div1 = document.getElementById('div1')
    var parent = div1.parentElement //元素
    
(3) 获取子元素节点:
 
    var div1 = document.getElementById('div1')
    var child = div1.childNodes //获取集合(childNodes包括空文本 text)
    console.log(div1.childNodes[1].nodeName) // #P
    console.log(div1.childNodes[1].nodeType) // 1 (一般类型为1,text为3)
    
(4) 删除节点
    var div1 = document.getElementById('div1')
    var child = div1.childNodes
    div1.removeChild(child[0])
    

3.BOM(浏览器对象模型 Browser Object Model)

1.检测浏览器类型:

var ua = navigator.userAgent //获取浏览器类型
var isChrome = ua.indexOf('Chrome')
console.log(isChrome)

2.解析url的各部分

location:

console.log(location.href) //整个路径(location.href = ''  //改变路径地址,在控制台直接改写可以直接访问该网址)
console.log(location.host) //:主机名
console.log(location.protocol) //协议http: , https:
console.log(location.pathname) //路径'/learn/199'
console.log(location.search) // ?之后的参数(多个参数&相连)
console.log(location.hash) // #哈希值

知识补充:

screen 屏幕:
console.log(screen.width)
console.log(screen.height)

history 历史:
history.back()//返回
history.forward()//前进

相关文章:

  • 浏览器里的文件管理小系统filedir.php,返回上级目录时有个“浏览”链接总掉了...
  • 数据可视化Seaborn从零开始学习教程(二) 颜色调控篇
  • BaseResponse公共响应类
  • js正则验证代码库
  • 网络打印机拒绝访问,无法连接处理方法汇总
  • 内因是推动发展的主导因素
  • 在eclipse中配置c++ 开发环境的记录
  • 并发、并行与多线程关系
  • oracle表结构及数据的导出导入
  • angularjs4+ionic3集成搭建
  • 【C#】获取我的电脑的名字,如This PC、这台计算机
  • 对缓存使用的一些思考
  • nginx负载均衡及配置
  • 构建自己的php扩展函数
  • 基于wpf的skyline三维二次开发框架
  • 深入了解以太坊
  • [译] 怎样写一个基础的编译器
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • ECMAScript入门(七)--Module语法
  • es6要点
  • Javascript 原型链
  • Terraform入门 - 1. 安装Terraform
  • Vim 折腾记
  • vue数据传递--我有特殊的实现技巧
  • XML已死 ?
  • 大快搜索数据爬虫技术实例安装教学篇
  • 复习Javascript专题(四):js中的深浅拷贝
  • 工作手记之html2canvas使用概述
  • ------- 计算机网络基础
  • 少走弯路,给Java 1~5 年程序员的建议
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • # Java NIO(一)FileChannel
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (12)目标检测_SSD基于pytorch搭建代码
  • (4)(4.6) Triducer
  • (arch)linux 转换文件编码格式
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (二)windows配置JDK环境
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (三) diretfbrc详解
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转)h264中avc和flv数据的解析
  • (转)Scala的“=”符号简介
  • .aanva
  • .Net Core 中间件验签
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET Reactor简单使用教程
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .net 调用php,php 调用.net com组件 --