2011-08-29 87 views
0

當用戶雙擊選擇框中的元素時,我將動態創建輸入。每個元素類型可以有多個輸入,所以我將它們創建爲HTML數組。創建輸入時,還會創建指向javascript函數的鏈接。該功能將爲點擊的特定字段打開日曆提示。我有問題的範圍縮小到下面的代碼:使用Javascript獲取HTML數組長度

document.getElementById('start_' + field + '[]').length 

正如你看到的,我試圖抓住數組的長度,就像我會與一個正常的JavaScript數組。這當然不起作用。我無法在Google上找到任何涉及這一點的內容,這通常意味着它是不可能的,但我覺得很難相信。

或者,我可以在每次創建該字段時增加一個變量我只是想確保我不會錯過某些顯而易見的東西。

預先感謝您!

{編輯}

請告訴我,HTML不允許數組之前引用http://www.thefutureoftheweb.com/blog/use-arrays-with-html-form-inputs

{DoubleEdit +回答}

的問題是不是HTML陣列不存在,但該ID屬性不能是一個數組。我發現http://roshanbh.com.np/2008/08/handling-array-html-form-elements-javascript-php.html這解釋瞭如何做我需要的東西...是啊。

+1

你混淆了'id'和'name' –

+2

HTML沒有數組,你會被PHP的表單數據解析規則弄糊塗了。不能有多個具有相同ID的元素,並且不能在HTML 4,X或XHTML ID中使用caracter'['或']'。 – Quentin

回答

2

您可以使用下面的純JavaScript代碼:

oForm = document.forms[0]; 
oForm.elements['start_' + field + '[]'].length; 

或者在jQuery庫:

$('input[name="start_' + field + '[]"]').length; 

我寧願第二,因爲我不是100%肯定的跨瀏覽器兼容第一個解決方案。

+0

PERFECT!謝謝:D –

1

如何使用這種語法?使用這種

onclick="myFunction(event, this)" 

你可以通過任何重要的數據 - 在你的情況下,第一個參數和對象在第二

mouseposition語法是無效的,在這樣的事實:ID必須是唯一的,並且foooBar []是與另一個foooBar []相同的id(實際上HTML對數組一無所知)

+0

這已經在onClick函數中。問題是被點擊的元素是一個選擇框。我可以從這個元素解析所有必要的信息,然後創建輸入框。然後我需要獲取輸入框HTML數組的長度,以便我可以創建鏈接以引用數組中的特定索引 –

+0

您錯了,HTML確實允許使用數組,並且始終使用它們。它根據需要動態擴展數組,我只是不知道如何訪問所述數組。如果我將數組傳遞給後端的PHP,我會收到一個數組,例如$ _POST ['input'] [0]等等。問題是javascript可以訪問該數組嗎? –

+0

你錯了,這不是HTML的特點,但PHP - 它適用於名稱,而不是ID - 所以答案是 - 不,JavaScript不能,因爲這不是解析爲數組(這是通過服務器上的PHP完成的) - 你可以從document.getElementsByTagName('*'); (或用父節點代替文檔) – SergeS

0

document.getElementById不返回HTML集合,所以它沒有length屬性。