2013-01-25 74 views
1

我想返回的類名getElementsByClassName方法不返回長度

有一系列按鈕,我想添加事件偵聽器,他們都有着相同的類名的length

removeButton = document.getElementsByClassName("removeButton");

當我做removeButton.length我總是0但如果我這樣做:

console.log(removeButton)我能看到的物品存在的列表。

我需要的長度,所以我可以迭代通過for-loop並分配事件偵聽器。

什麼似乎是問題?

解決方案
檢查元素試圖用getElementsByClassName方法

+7

是整個文檔加載後執行的JavaScript嗎?也許你正試圖訪問不存在的元素 – KaeruCT

+0

你可以添加圍繞'removeButton = document.getElementsByClassName(「removeButton」);' – Dancrumb

+0

代碼本身工作得很好的代碼:http://jsfiddle.net/sRK8V/ –

回答

2

如果您的JavaScript代碼依賴於它們,您必須確定這些元素存在。通過將<script>標籤在身體像這樣的結尾實現這一目標的

方式一:

<html> 
<head></head> 
<body> 
<script type="text/javascript"> 
    // code here 
</script> 
</body> 

你也可以把所有的代碼在一個函數爲window.onload事件或使用提供了一個庫這個功能,比如jQuery

+1

** NO!**你*永遠不會*把腳本元素放在身體裏!你應該運行由'window.onload = function(){/ *函數在這裏調用* /}'所調用的函數,並在所有腳本元素中使用'defer =「defer」'屬性/值這一頁。 – John

1

由於OP指出他們聚集,

檢查元素試圖與 getElementsByClassName方法來收集他們之前存在之前就已存在。