2017-06-18 75 views
0

使用JS和我已經創建了一個圖像,點擊它後彈出一個彈出窗口模式。我正在關注w3schools.com上的一個例子,但我希望他們能解釋他們代碼的這一方面。所以彈出窗口模態包含一個「x」,在點擊時,會按照它應該關閉的模式。然而,當他們創建了取消按鈕在JS的變量,他們有它後面括號中0:使用Javascript測量點擊量?

var closeButton = document.getElementsByClassName("close")[0]; 
                 ^
                 ^

我的第一個問題是,你怎麼參閱本部分包含數值?這是一個數組嗎?這是用來衡量有多少點擊正在被記錄(即點擊後,這個值將變爲[1]?)。

此外,是否可以附加另一個變量來代替該值?換句話說,如果我可以做到以下幾點?

var clicks = [0]; 
var closeButton = document.getElementsByClassName("close").clicks; 

我想知道這是因爲我希望看到的是,如果點擊按鈕,我會在同一網站上使用的其他情態動詞一樣取消按鈕。通過這個,我的意思是我想要將點擊值改回到[0],所以它對其他模式也是一樣的(到目前爲止,取消按鈕只能在第一個模式下工作,並且不會關閉其他的,我相信這是因爲我不會回到[0])。

對不使用正確術語的道歉;這是我問這個問題的主要原因之一。括號[0]中的那個值是指什麼?它測量點擊量嗎?當我想對其他模態執行相同的動作時,我如何不斷更改它的值以使它回到[0]?任何和所有的幫助將非常感謝,因爲我對此很新穎。

回答

0

括號中的值表示數組的索引。

本聲明:

document.getElementsByClassName("close")

返回元素的數組您的文檔與類名「關閉」。如果有多個關閉按鈕,它將返回所有這些元素的數組。

[0]添加到該語句的末尾意味着您要選擇數組的起始索引處的元素(數組中的第一個元素)。

您可以將其更改爲[1],它會選擇該數組中的第二個元素,但這在這種情況下無助於您。

如果你想關閉多個情態動詞用相同的關閉按鈕,並且只有一個與類名「關閉」比你總是可以選擇與該按鈕關閉按鈕:

document.getElementsByClassName("close")[0]

+0

感謝您的回覆@DylanStark。但是,如果我在其他窗口上重複使用相同的按鈕,它會發生什麼變化?這是否意味着我需要爲不同的窗口聲明不同的變量? – user7366442

1
var closeButton = document.getElementsByClassName("close")[0]; 

「getElemetsByClassName」將返回一個數組。通過最後使用「[0]」,它只是說我想在closeButton上存儲這個數組的第一個位置。

如果頁面上只有一個「.close」,返回將是 - >> [element]。 如果有多個 - >> [元素,元素...]

+0

謝謝。只是爲了澄清,這是否意味着我基本上可以有多個名字?例如,是否可以執行以下操作:var secondCloseButton = document.getElementByClassName(「close」,「close2」,「close3」)[1]; ?我只是困惑,爲什麼我的按鈕只能在我需要它工作的三個地方之一工作。 – user7366442

1

功能getElementsByClassName方法[名稱]返回具有[名稱]作爲類名稱的所有元件的陣列。因爲在這個例子中只有一個具有這個特定類名的元素(或者他們知道他們只需要數組的第一個元素),索引[0]被追加,返回這個數組的第一個元素。因此,除了使用類「close」創建更多元素外,更改索引是沒有意義的。此外,索引無論如何都與點擊次數或您的用戶互動無關。

希望這回答你的問題^^

+0

對我來說,只需在ID值下調用變量會更好,所以我不需要混淆數組?我只是想讓這個相同的取消按鈕在我使用它們的任何地方工作。 – user7366442

+0

是的,如果您需要區分用戶點擊哪個按鈕(例如,您有三個關閉按鈕可以執行不同的操作),則最好使用不同的ID。 – dnjj