2011-04-16 33 views
0

我正在嘗試使用mootools框架爲我的網站創建頁面。我已經到處尋找答案,爲什麼這不起作用,但已經空了。如何從由「document.getElementBytag()」創建的數組調用元素?

我想用html中的不同數據類型填充幾個數組,然後通過索引號從每個數組中調用元素動態鏈接和控制函數中的元素。我在mootools jsfiddle實用程序中測試以下代碼的簡單片段。試圖從數組「region」中調用一個元素直接返回「undefined」,並試圖返回一個元素的索引號返回空值「-1」。

我無法從這個數組中獲得有用的數據。我可以想出三個可能的原因,但無法弄清楚如何確定這裏發生了什麼: 1.也許這個數組根本沒有被填充任何數據。 2.也許它正在填充,但我誤解了「document.getElementBytag()」獲得的數據類型,因此數據不能用「document.writeln()」語句顯示。 (或者我是否強制性地創建所有的數組?) 3.也許問題是以這種方式創建的數組沒有編入索引。 (或者是有什麼我可以做索引此陣列?)

HTML:
<div>Florida Virginia</div>
<div>California Nevada</div>
<div>Ohio Indiana</div>
<div>New York Massachussetts</div>
<div>Oregon Washington</div>

JS:
var region = $$('div');
document.writeln(region[2]);
document.writeln(region.indexOf('Ohio Indiana'));

感謝您幫助一位js新手弄清楚這個陣列的膽量是怎麼回事。

+1

什麼是'getElementBytag'?我知道'getElementsByTagName'。 – Oded 2011-04-16 18:39:50

回答

2

$$將返回DOM元素列表。如果您只對這些DOM節點的文本感興趣,那麼首先將其提取出來。正如@Dimitar在評論中指出的那樣,在Elements的對象上調用get將返回一個數組,可能通過遍歷集合中的每個元素並獲取有關屬性。

var region = $$('div').get('text'); 

console.log(region[2]);      // Ohio Indiana 
console.log(region.indexOf('Ohio Indiana')); // 2 

還可以使用的,而不是console.logdocument.writelndocument.write,原因是調用這個函數會清除整個文件,並與任何字符串中傳遞代替它。

看到example

+1

做.map是囉嗦,如果你只關心文本。 var'textArray = $$(「div」)。get(「text」)'是你所需要的,儘管我懷疑它歸結爲相同的東西在後面 – 2011-04-17 09:07:33

+0

真棒。你們是救生員。非常感謝。 – user711370 2011-04-18 17:39:07

+0

@Dimitar - 我不知道'Elements.get'將返回一個數組,而不是選擇第一個元素的文本。但是,這很好,謝謝你讓我們知道。我已經更新了我的答案。 – Anurag 2011-04-18 17:58:11

相關問題