以下是我的codepen:
https://codepen.io/alanotmt/pen/gOeJvXK
在codepen裡console.log(add_bb)
他會顯示
[object HTMLCollection]{
"0":{}
"1":{}
"2":{}
"3":{}
"4":{}
"5":{}
"6":{}
"7":{}
"8":{}
"9":{}
"10":{}
}
我console.log(add_bb.length) 答案會是 11
但是我同樣的code在 xampp上跑 在網頁上按F12 看我console
卻得到這樣的結果:
HTMLCollection []
0: button.btnself.remove-button
1: button.btnself.remove-button
2: button.btnself.remove-button
3: button.btnself.remove-button
4: button.btnself.remove-button
5: button.btnself.remove-button
6: button.btnself.remove-button
7: button.btnself.remove-button
8: button.btnself.remove-button
9: button.btnself.remove-button
10: button.btnself.remove-button
length: 11
[[Prototype]]: HTMLCollection
data_setting.js:6 0
我console.log(add_bb.length) 答案會是 0
為什麼同樣的code 得出來的結果不一樣?
先大約跟你說一下。javascript的奇怪特性。
首先要注意到的是,變數類型的自動轉換。
一般來說,object 類型其實是不存在 length 的。
也就是說 object 本身並沒有長度值存在。
而有時為何會突然出現長度值呢?
這就是好玩的地方了。
主要是看其KEY索引值。
一般物件宣告的同時。理論上來說。只要是索引值是非數字的。
在一些應用或是函數上。會將其直接視為 object 。也就造成了無長度值的問題。
但像你的KEY值是數字型的。則有時在一些函式或是應用上。
會自動將其視為 Array 看待。Array 是有 length 長度值的。
這就是javascript的千奇百怪的世界。