web apis 基本认知

web APIs 基本认知

作用和分类

  • 作用:就是使用JS去操作html和浏览器
  • 分类:DOM(文档对象模型),BOM(浏览器对象模型)

DOM基本知识

  1. 什么是DOM
  • DOM是用来呈现以及任意HTML或XML文档交互的API
  • 大白话:DOM是浏览器提供一套专门操作网页内容的功能
  • DOM作用:开发网页内容特效和实现用户交互
  1. DOM树
  • 将HTMl文档以树状结构直观表现出来,我们称之为DOM树
  • 描述网页内容关系的名词
  • 作用:文档数直观的体现了标签与标签之间的关系
  1. DOM对象
  • DOM对象:浏览器根据html标签生成的js对象

  • 所有的标签属性都可以在这个对象上找到
    修改这个对象上的属性会自动映射到标签身上

  • DOM的核心思想

  • 把网页内容当做对象来处理

  • document对象

  • 是DOM里提供一个对象

  • 所以他提供的属性和方法都是用来访问和操作网页内容的

  • 网页所有内容都在document里面

获取DOM元素

1. 根据css选择器来获取DOM元素

  1. 匹配第一个第一个元素
document.querySelector('css选择器')

参数:

  • 包含一个或者多个有效的css选择器字符串
<div class="box">
    <input name='xx'>    
</div>
//选中了div里面的name属性为xx的input标签
let inputDom = document.querySelector("div.box input[name='xx']");

返回值:

  • css选择器匹配的第一个元素,一个HTMLElement对象
<div>1</div>
<div>2</div>
<script>
    let divDom = document.querySelector('div')
    console.dir(divDom)
</script>
  • 如果没有匹配到,则返回null
<script>
    let divDom = document.querySelector('div')
    console.dir(divDom)//null
</script>
  • 用console.log打印出来的是标签,要想输出一个dom对象就用console.dir()
<div></div>
<script>
    let divDom = document.querySelector('div')
    console.log(divDom)
    console.dir(divDom)
</script>
  1. 选择匹配的多个元素
document.querySelectorAll('css选择器')
参数:

  - 包含一个或多个有效的css选择器字符串

  返回值:
  
  - css选择器匹配的所有符合的对象集合
  
    ```html
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
    let liDom = document.querySelectorAll('ul li')
    console.dir(liDom)
    ```
  
  - 1
  
  - 
  
  特点:
  
  - 得到的是一个伪数组
  
  - 没有数组的pop(),push()等数组的方法
  
  - 想要得到里面的每一个对象,则需要遍历的方式来获得
  
    ```js
    let divs = document.querySelectorAll('divs')
    console.dir(divs)
    ```
  
    
  
  注意:哪怕只有一个元素,通过querySelectorAll()获取过来的也是一个伪数组,里面只有一个元素而已

2. 其他获取DOM元素方法(了解)

  1. 根据id获取一个元素
document.getElementById('id名')
  1. 根据标签取一类元素 获取页面所有的div
documentgetElementsByTagName('div')
  1. 根据类名获取元素 获取页面所有同类名的元素
document.getElementsByClassName('w')

设置/修改DOM元素内容

DOM对象都是根据标签生成的,所以操作标签,本质上就是操作DOM对象。就是操作对象使用的点语法

  1. document.write()方法
  • 只能将文本内容追加到前面的位置
  • 文本包含标签会被解析
//永远只是追加操作,且只能位置</body>前
document.write('Hello World')
document.write('<h3>你好,js</h3>')
  1. 对象.innerText 属性
  • 将文本内容添加/更新到任意表标签位置

  • 将文本包含的标签不会被解析

<div class="box"></div>
let box = document.querySelector('.box')
box.innerText = '<h4>你好,世界</h4>'
  1. 对象.innerHTML 属性
  • 将文本内容添加/更新到任意标签位置
  • 文本中包含的标签会被解析
<div class="box"></div>
let box = document.querySelector('.box')
box.innerHTML = '<h6>我的世界<br>有你真好</h6>'

设置/修改DOM元素属性

可以通过JS设置/修改标签元素属性。比如通过src更换 图片

可以通过JS设置/修改元素样式属性

  1. 设置/修改元素常用属性
    语法:
对象.属性 = 值

代码示例:

<img src='' title='未定义图片'/>
//获取到img标签
let pic = document.querySelector('img')
//操作元素设置或者修改属性
pic.src = '图片路径'
pic.src = '这是一个图片'

  1. 设置修改元素样式属性
    通过style属性操作css
    语法:
对象.style.样式属性 = 值

注意:

  1. 修改样式通过style属性引出
  2. 如果属性有 - 连接符,需要转换为小驼峰命名法
  3. 赋值的时候,需要的时候不要忘记加css单位
<div class="box"></div>
let box = document.querySelector('.box')
//修改盒子的样式属性
box.style.backgroundColor = 'skyblue'
box.style.width = '300px'
box.style.height = '300px'
box.style.marginTop = '50px'

  1. 操作类名(className)操作css
    如果修饰的样式比较多,直接通过style属性修改比较繁琐,我们可以借助类名的形式

语法:

元素.className = 'box'

注意:

  • 由于class是关键字,所以要使用className去代替
  • className是使用新的值换旧值,如果需要添加一个类,需要保留之前的类名
    代码示例:
.box {
            width: 100px;
            height: 100px;
            background-color: skyblue;
            color: pink;
        }

.box1 {
            width: 200px;
            height: 200px;
            background-color: aqua;
        }
<div class="box">你好</div>
    <script>
        let div = document.querySelector("div")
        //会替换掉已有的类名
        div.className = 'box1'
        //想要保存类名必须加上以前那个类
        // div.className = 'box box1'
</script>

  1. 通过classList操作控制css
    为了解决className容易覆盖以前的类名,可以通过classList方式追加和删除类名
    语法:

追加一个类

//可以一次添加多个类
元素.classList.add('类名')

删除一个类

//可以同时删除多个类
元素.classList.remove('类名')

切换一个类

//如果本来有,那我就移除  , 如果本来没有,那我就添加
元素.classList.toggle('类名')
  1. 设置/修改 表单元素 属性
  • 获取
DOM对象.属性名
  • 设置
DOM对象.属性名 = 新值
  • 语法
表单.value='用户名'
表单.type = 'password'
....

定时器-间歇函数

  • 定时器介绍
    网页中经常会需要一种功能:每隔一段时间需要自动执行一行代码,不需要我们手动触发。就比如网页中的倒计时,要实现这种需求,需要定时器函数。其中一种就是间歇函数
  • 定时器的使用
    1.开启定时器
setInterval(函数,间隔函数)



©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容