在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ getElementsByTagName獲取video標(biāo)簽,打印出來了但實際獲取

getElementsByTagName獲取video標(biāo)簽,打印出來了但實際獲取不到?

場景:點擊目錄,頁面插入video標(biāo)簽。插入后獲取video開始播放事件
問題:能打印出dom信息,但是對象的長度為0且不能綁定事件。實際問題就是,dom中成功append結(jié)構(gòu),但是瀏覽器還沒重繪,此時綁定事件失敗。除了使用setTimeout,還有其他方法嗎?
clipboard.png

clipboard.png

回答
編輯回答
心上人

getElementsByTagNamequerySelector的區(qū)別了解一下?

Element.getElementsByTagName() 方法返回一個動態(tài)的包含所有指定標(biāo)簽名的元素的HTML集合HTMLCollection。指定的元素的子樹會被搜索,不包括元素自己。返回的列表是動態(tài)的,這意味著它會隨著DOM樹的變化自動更新自身。所以,使用相同元素和相同參數(shù)時,沒有必要多次的調(diào)用Element.getElementsByTagName() .

劃重點了啊。這意味著它會隨著DOM樹的變化自動更新自身,他是動態(tài)呢,那么結(jié)合console打出來的其實是快照,也是動態(tài)的。那么得出結(jié)論,你那個時候video還沒有插入進(jìn)去。你可以用querySelector驗證一下

傳送門-去MDN看看getElementsByTagName以及HTMLCollection

2017年11月12日 11:54
編輯回答
寫榮

你把在插入video標(biāo)簽時把標(biāo)簽保存下來


https://jsfiddle.net/r7seguvj/
創(chuàng)建元素后,立刻就能綁定事件的,就算元素沒有append到document中,請檢查代碼內(nèi)部邏輯

2017年11月29日 14:54
編輯回答
糖果果

注意是getElementsssssssssssssssssssssssssssss……ByTagName

有s的,返回來的一定是個類數(shù)組對象(HTMLCollection),引用的時候加個.item(0)變成document.getElementsByTagName('video').item(0);就行了。

2017年2月27日 23:17
編輯回答
青裙

貼下代碼吧,是不是獲取的時候還沒有插入vedio

2017年2月13日 11:05