Javascript中css選擇器的陷阱

2021-09-13 20:21:24 字數 834 閱讀 6268

之前寫了一大段都刪了,想了想沒必要介紹api的使用。queryselector queryselectorall這兩個api現在應該沒人不知道

這裡只簡單說下使用時容易遇到的兩個坑

document.queryselectorall返回的是靜態的nodelist,可以理解為某一時間的快照

舉個例子說就是如果乙個ul下有兩個li,現在我用queryselectorall獲取li,如果以後再動態的新增幾個li,queryselectorall返回的nodelist是不會包括後來動態新增的li的,而getelementbytagname獲取到的nodelist則是動態的,就算後來動態新增的元素一樣可以獲取到

另外一點是返回的結果可能與預想中的有偏差 id為test的元素中沒有div元素,但是返回的並不是空陣列,可以自行實驗一下
helloi'am a ninja

var a = document.getelementbyid('test').queryselectorall('div b');

console.log(a);

下面是jq的作者給出的乙個方法,使其正確的匹配,首先必須為元素賦予元素乙個唯一的id,並且稍後將原始的id恢復回去,然後將id 拼接在選擇器前面
(function() 

catch(e)

finally

}}) ()

var b = rootedqueryselectorall(

document.getelementbyid('test'),

'div b'

)console.log(b);

如何javascript獲取css中的樣式

obj.style.height只能獲取行間樣式,但是我們要怎麼獲取寫在css檔案中的樣式呢?首先我們要用乙個新的方法currentstyle.這個方法由current和style兩個單詞組成意思是 目前的樣式.也就是載入css檔案後取出來的樣式.currentstyle的用法是 元素.curren...

Javascript 改變CSS樣式

有三種方法 直接改變樣式 改變classname和改變csstext 改變classname document.getelementbyid obj classname 改變csstext document.getelementbyid obj style.csstext width 20px bo...

JavaScript操作css樣式

在html中樣式定義分為內部css和外部css兩種 內部css 定義 使用style屬性針對特定元素的樣式 讀取 設定單個內部樣式 a.element.style.propertyname b.element.style.getpropertyvalue propertyname element.s...