DOM扩展

1、选择符API
  • querySelector()接收一个CSS选择符,返回与该模式匹配的第一个元素,如果没有找到匹配元素,则返回null
<div class="myDiv">1</div>
<div class="myDiv">2</div>
<div class="myDiv">3</div>
var myDiv = document.querySelector(".myDiv");     //通过Document调用该方法,在文档元素范围内查找
console.log(myDiv.innerHTML);            //1
<ul id="myList">
    <li class="item">1</li>
    <li class="item">2</li>
    <li class="item">3</li>
</ul>
var ul = document.getElementById("myList");
var li = ul.querySelector(".item");       //通过Element类型调用只在其后代元素范围内查找
console.log(li.innerHTML);                //1
  • querySelectorAll()接收的参数与querySelector()一样,只是返回的是所有匹配元素,返回一个NodeList实例
<div class="myDiv">1</div>
<div class="myDiv">2</div>
<div class="myDiv">3</div>
var myDiv = document.querySelectorAll(".myDiv");
console.log(myDiv.length);                 //3
console.log(myDiv[2].innerHTML);           //3
<ul id="myList">
    <li class="item">1</li>
    <li class="item">2</li>
    <li class="item">3</li>
</ul>
var ul = document.getElementById("myList");
var li = ul.querySelectorAll(".item");
console.log(li.length);                    //3
console.log(li[1].innerHTML);              //2
2、通过类名获取getElementsByClassName()
<ul id="myList">
    <li class="item">1</li>
    <li class="item">2</li>
    <li class="item">3</li>
</ul>
var lis = document.getElementsByClassName('item');       //接收一个参数,表示类名的字符串
console.log(lis.length);        //3
3、插入标记innerHTML属性

读模式下,innerHTML属性返回与调用元素子节点对应的HTML标记;写模式下,innerHTML属性根据指定值创建新的DOM树,然后用这个DOM树完全替换调用元素原先的所有子节点

<ul id="myList">
    <li class="item">1</li>
    <li class="item">2</li>
    <li class="item">3</li>
</ul>
var myList = document.getElementById('myList');
var myListInnerHTML = myList.innerHTML;
console.log(myListInnerHTML);               
//返回字符串
//<li class="item">1</li>
//<li class="item">2</li>
//<li class="item">3</li>
var myList = document.getElementById('myList');
myList.innerHTML = '<li class="item">3</li>'; 
console.log(myList.innerHTML);                //<li class="item">3</li>,写模式下,重新设置
myList.innerHTML = "hello world";   
console.log(myList.innerHTML);              //hello world,如果设置的是纯文本,那结果就是设置纯文本
4、children属性

由于IE9之前的版本和其他浏览器处理文本节点中的空白符有差异,因此出现了children属性

<ul id="myList">
    <li class="item">1</li>
    <li class="item">2</li>
    <li class="item">3</li>
</ul>
var myList = document.getElementById('myList');
console.log(myList.children);                //返回3个li元素节点
console.log(myList.childNodes);          //返回除li元素节点外还有文本节点
5、插入文本

通过innerText属性可以直接操作元素中包含的文本内容,包括子文档树文本;通过该属性读取值时,会将子文档树中的文本拼接起来;写入值时,结果会删除所有子节点,插入包含相应文本值的文本节点

<ul id="myList">
    <li class="item">1</li>
    <li class="item">2</li>
    <li class="item">3</li>
</ul>
var myList = document.getElementById('myList');
console.log(myList.innerText);
//返回
//1
//2
//3
var myList = document.getElementById('myList');
myList.innerText = "hello";
console.log(myList.innerText);           //hello;设置该属性前会移除所有先前的子节点
6、样式

HTML中定义样式的方式有3种:通过<link>元素包含外部样式表文件、使用<style>元素定义嵌入样式、用style特性定义针对特定元素的样式;任何支持style特性的HTML元素在JS中都有一个对应的style属性,但仅包含通过style特性指定的所有样式信息,不包含外部样式表和嵌入样式表的样式

<div id="myBox"></div>
var myBox = document.getElementById('myBox');
myBox.style.width = '100px';
myBox.style.height = '100px';
//标准模式要求所有度量值都必须指定单位,混杂模式下可直接写成'100',浏览器会假设为'100px',但这种写法标准模式会因没有度量单位而直接忽略
myBox.style.backgroundColor = 'red';         
//CSS属性中类似background-color这种带短横线写法的属性,需将其转换为驼峰大小写形式
7、元素大小

元素的可见大小由高度、宽度决定,包括所有内边距、滚动条和边框,不包括外边距

  • 偏移量(只读属性):offsetHeightoffsetWidth指的是元素分别在垂直和水平方向上占用空间大小(即可见大小),以像素计;offsetTopoffsetLeft表示元素边框至包含元素内边框之间的像素距离
<div id="myBox"></div>
var myBox = document.getElementById('myBox');
myBox.style.width = '100px';
myBox.style.height = '100px';
myBox.style.backgroundColor = 'red';
console.log(myBox.offsetHeight);                       //100
console.log(myBox.offsetLeft);                         //8
  • 客户区大小(只读属性):指元素内容及其内边距所占据的空间大小,相关属性是clientWidthclientHeight,滚动条占用空间不计算在内
//浏览器视口大小
document.body.clientWidth
document.body.clientHeight
  • 滚动大小
    滚动大小指的是包含滚动内容的元素的大小;scrollHeightscrollWidth指的是在没有滚动条的情况下,元素内容的总高度,主要用于确定元素的实际大小;scrollLeftscrollTop指被隐藏在内容区域左侧和上方的像素数,通过设置这2个属性可以改变元素的滚动位置
//元素尚未被滚动的情况下
element.scrollLeft == 0;
element.scrollTop == 0;
//如果元素垂直滚动了,element.scrollTop会大于0,并且表示元素上方不可见内容的像素高度,element.scrollLeft同理
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容

  • 1. 选择符API 根据CSS选择符选择与某个模式匹配的DOM元素。Selectors API的核心方法:quer...
    xiaoguo16阅读 419评论 0 0
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,729评论 2 17
  • 本章内容 理解 Selectors API 使用 HTML5 DOM 扩展 了解专有的 DOM 扩展 对 DOM ...
    闷油瓶小张阅读 572评论 0 0
  • 只是象征性地作了个纪念 没有美酒,没有丰盈的体态,没有悄然滋生的诱惑 我乘时光之船 驶进暗夜的胡同 一首蓄谋已久的...
    岭南读夫阅读 217评论 0 1
  • 我的心灵寄托,是父母的爱。 所以我不能接受,他们不爱我。 我努力地为妈妈排忧解难,想用爱去...
    陈嘉媛阅读 95评论 1 1