实战IT培训机构_黄色激情网站_IT培训班选大学生IT技术培训中心_黄色激情视频网站_中公优就业

400-650-7353
您所在的位置:首頁 > IT干貨資料 > web前端 > 【Web前端基礎知識】dom獲取元素的方式

【Web前端基礎知識】dom獲取元素的方式

  • 發布: Web前端培訓
  • 來源:優就業
  • 2021-09-28 14:22:04
  • 閱讀()
  • 分享
  • 手機端入口

在原生js中我們會經常操作dom結構,通過獲取具體標簽進行操作,那我們知道常用的js獲取元素的方式有哪些嗎,并且這些方法之間的區別是什么呢,以及有哪些注意點呢!接下來我們就一起看一下吧!

JavaScript獲取元素的的幾種方式以及區別

(1) 通過ID名獲取getElementById(“id名”):

通過id名是獲取具體的實際的一個標簽,是靜態獲取,即獲取的時候有就可以獲取得到,后續再添加該id名的標簽也獲取不到了。為何會說通過id名獲取是靜態獲取呢,我們通過具體的例子來看:

  1. <ul id="list"></ul> 

Js代碼為:

  1. var oUl = document.getElementById("list"); 
  2.    var byId = document.getElementById("h"); 
  3.    console.log(byId); 
  4.    //在ul中添加一個li 
  5.    oUl.innerHTML = "<li id='h' style='width:100px;height:100px;background:red'></li>"
  6.    console.log(byId); 

最后的結果為:null null

可以得出結論通過id名的獲取是靜態獲取,在后期添加的獲取不到

注意:

① 上下文必須是document,至于原因我們留到最后再解釋;

② 通過id只獲取到一個元素,畢竟id是獨一無二的;

③ 通過id獲取是靜態獲取;

(2) 通過name屬性獲取 getElementsByName('name屬性值')

當我們的標簽有name屬性時,可以通過其name屬性來獲取標簽,如在單選按鈕中

  1. <input type="radio" name='sex' >男  
  2. <input type="radio" name='sex' checked>女 

Js代碼為:

  1. var oSex = document.getElementsByName('sex'); 
  2. console.log(oSex); 

結果如下圖是節點列表,為一個類數組:

注意:

① 上下文必須是document;

② 獲取的結果是一個類數組,不是一個真正的數組,有length屬性,可以通過具體的下標獲取對應的元素;

(3) 通過標簽名獲取:getElementsByTagName('標簽名')

通過標簽名獲取的元素是一個元素集合,為類數組形式,有length屬性;且通過標簽名獲取為動態獲取,即獲取的時候沒有該標簽,若后續進行手動添加后也能獲取到。舉例:

  1. <ul id="list"></ul> 

Js代碼如下:

  1. var oUl = document.document.getElementById("list"); 
  2.     var byTagName = document.getElementsByTagName("li"); 
  3.     console.log(byTagName); 
  4.     //在ul中添加一個li 
  5.     oUl.innerHTML = "<li id='h' style='width:100px;height:100px;background:red'></li>"
  6.     console.log(byTagName); 

最后的結果為:

可以看到在手動添加li標簽之后,可以動態地獲取到添加之后的標簽,但是我們也看到了通過標簽名獲取的元素是一個集合,就算只有一個元素也是一個集合,是以一個類數組的形式存在,并不是真正的數組。

注意:

① 上下文可以是document,也可以是一個父元素;

② 是一個類數組,有長度屬性,通過[]可以獲取具體的某一項;

③ 在使用時要通過具體的下標,比如添加點擊事件時;

(4) 通過類名獲取 getElementsByClassName(‘類名’)

通過類名獲取元素的方式與用法基本一樣,也是動態獲取;

注意:

① 上下文可以是document,也可以是一個父元素;

② 是一個類數組,有長度屬性,通過[]可以獲取具體的某一項;

③ 在使用時要通過具體的下標,比如添加點擊事件時;

④ 注意單詞拼寫,因為class是一個關鍵字,所以為getElementsByClassName

(5) 快速獲取html元素 document.documentElement

  1. document對象有一個documentElement屬性,該屬性始終指向HTML頁面中的<html>元素。 
  2. var html = document.documentElement; //取得對<html>的引用   

(6) 快速獲取body元素 document.body

  1. document 對象還有一個 body 屬性,直接指向<body>元素。 
  2. var body = document.body; //取得對<body>的引用 

(7) 通過選擇器獲取一個元素 querySelector("css選擇器")

該方法接收一個 CSS 選擇符,返回與該模式匹配的第一個元素。

注意:

① 上下文可以是document,也可以是一個父元素;

② 參數是選擇器,如“div .active”;

③ 返回值只能獲取到第一個元素;

④ 與通過id獲取的方式一樣為靜態獲取;

⑤ Ie8以下存在兼容問題;

(8) 通過選擇器獲取一組元素 querySelectorAll("css選擇器")

該方法接收一個 CSS 選擇符,返回的是所有匹配的元素而不僅僅是一個元素。其結果為一個節點列表。

注意:

① 上下文可以是document,也可以是一個父元素;

② 參數是選擇器,如“div .active”;

③ 返回值為一組節點列表,是一個類數組;

④ 與通過id獲取的方式一樣為靜態獲取;

⑤ Ie8以下存在兼容問題;

使用原生JS獲取DOM元素的8個方法講完了,接下來在講一下為什么有的方法只能在document上使用。

拿div舉例子,div是HTMLDivElement類的一個實例,document是HTMLDocument 的實例。

他們的繼承關系:

HTMLDivElement > HTMLElement > Element > Node > EventTarget

HTMLDocument > Document > Node > EventTarget

我們都知道子類繼承父類,子類就可以使用父類的屬性和方法。他們相同的繼承關系是Node和EventTarget,也就是說他們都可以使用Node和EventTarget上的方法。

如Node上的nodeName、parentNode等,和EventTarget上的addEventListener等。

getElementById只在Document類的原型上,HTMLDivElement 沒有繼承Document類,所以div不能使用getElementById方法。

getElementsByTagName即在Document類的原型上也在Element類的原型上,所以div和document都可以使用getElementsByTagName方法。其它同理。

文章“【Web前端基礎知識】dom獲取元素的方式”已幫助

更多內容

>>本文地址:http://www.jecan.cn/zhuanye/2021/70199.html

THE END  

聲明:本站稿件版權均屬中公教育優就業所有,未經許可不得擅自轉載。

1 您的年齡

2 您的學歷

3 您更想做哪個方向的工作?

獲取測試結果
  • 大前端大前端
  • 大數據大數據
  • 互聯網營銷互聯網營銷
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯網嵌入式
  • 全域電商運營全域電商運營
  • 軟件測試軟件測試
  • 室內設計室內設計
  • 平面設計平面設計
  • 電商設計電商設計
  • 網頁設計網頁設計
  • 全鏈路UI/UE設計UI設計
  • VR/AR游戲開發VR/AR
  • 網絡安全網絡安全
  • 新媒體與短視頻運營新媒體
  • 直播帶貨直播帶貨
  • 智能機器人軟件開發智能機器人
 

快速通道fast track

近期開班時間TIME

主站蜘蛛池模板: 称重传感器,测力传感器,拉压力传感器,压力变送器,扭矩传感器,南京凯基特电气有限公司 | 温室大棚建设|水肥一体化|物联网系统 | 冲锋衣滑雪服厂家-冲锋衣定制工厂-滑雪服加工厂-广东睿牛户外(S-GERT) | 【化妆品备案】进口化妆品备案流程-深圳美尚美化妆品有限公司 | 昆明网络公司|云南网络公司|昆明网站建设公司|昆明网页设计|云南网站制作|新媒体运营公司|APP开发|小程序研发|尽在昆明奥远科技有限公司 | 瓶盖扭矩测试仪-瓶盖扭力仪-全自动扭矩仪-济南三泉中石单品站 | ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 无尘烘箱_洁净烤箱_真空无氧烤箱_半导体烤箱_电子防潮柜-深圳市怡和兴机电 | 济南侦探调查-济南调查取证-山东私家侦探-山东白豹调查咨询公司 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 吊篮式|移动式冷热冲击试验箱-二槽冷热冲击试验箱-广东科宝 | 期货软件-专业期货分析软件下载-云智赢| 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 长沙中央空调维修,中央空调清洗维保,空气能热水工程,价格,公司就找维小保-湖南维小保环保科技有限公司 | 周口风机|周风风机|河南省周口通用风机厂 | 新疆系统集成_新疆系统集成公司_系统集成项目-新疆利成科技 | 阿米巴企业经营-阿米巴咨询管理-阿米巴企业培训-广东键锋企业管理咨询有限公司 | 圣才学习网-考研考证学习平台,提供万种考研考证电子书、题库、视频课程等考试资料 | 环氧铁红防锈漆_环氧漆_无溶剂环氧涂料_环氧防腐漆-华川涂料 | 宿舍管理系统_智慧园区系统_房屋/房产管理系统_公寓管理系统 | 纸布|钩编布|钩针布|纸草布-莱州佳源工艺纸布厂 | 石英砂矿石色选机_履带辣椒色选机_X光异物检测机-合肥幼狮光电科技 | 四合院设计_四合院装修_四合院会所设计-四合院古建设计与建造中心1 | 北京遮阳网-防尘盖土网-盖土草坪-迷彩网-防尘网生产厂家-京兴科技 | 消防泵-XBD单级卧式/立式消防泵-上海塑泉泵阀(集团)有限公司 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | 运动木地板厂家_体育木地板安装_篮球木地板选购_实木运动地板价格 | 间苯二酚,间苯二酚厂家-淄博双和化工 | 无味渗透剂,泡沫抑尘剂,烷基糖苷-威海威能化工有限公司 | 政府园区专业委托招商平台_助力企业选址项目快速落地_东方龙商务集团 | 滚塑PE壳体-PE塑料浮球-警示PE浮筒-宁波君益塑业有限公司 | 烘干设备-热泵烘干机_广东雄贵能源设备有限公司 | 自动焊锡机_点胶机_螺丝机-锐驰机器人 | 平面钻,法兰钻,三维钻-山东兴田阳光智能装备股份有限公司 | 江西自考网-江西自学考试网| 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 自动化展_机器人展_机床展_工业互联网展_广东佛山工博会 | ET3000双钳形接地电阻测试仪_ZSR10A直流_SXJS-IV智能_SX-9000全自动油介质损耗测试仪-上海康登 | 全自动真空上料机_粉末真空上料机_气动真空上料机-南京奥威环保科技设备有限公司 | 首页 - 军军小站|张军博客| 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 |