2011-08-29 5 views
0

사용자가 선택 상자에서 요소를 두 번 클릭하면 동적으로 입력이 생성됩니다. 요소 유형마다 여러 개의 입력이있을 수 있으므로 HTML 배열로 만듭니다. 입력이 생성되면 자바 스크립트 함수를 가리키는 링크도 생성됩니다. 이 함수는 클릭 한 특정 필드에 대한 일정 관리 프롬프트를 엽니 다. 나는 아래의 코드에 문제를 좁혀 :자바 스크립트로 HTML 배열 길이 얻기

보시다시피
document.getElementById('start_' + field + '[]').length 

, 난 그냥 보통의 자바 스크립트 배열에서와 같은 배열의 길이를 잡으려고 노력하고있다. 이것은 물론 작동하지 않습니다. 나는 이것을 참조하는 구글에서 무엇이든 찾을 수 없다. 그것은 보통 불가능하다는 것을 의미한다. 그러나 나는 그것을 믿기 어렵다.

또는이 필드가 생성 될 때마다 변수를 증가시킬 수 있습니다. 나는 분명히 뭔가 분명하게 분명한 것을 놓치지 않고 싶지 않았습니다.

미리 감사드립니다.

{EDIT}

는 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을 발견했다. .. ish.

+1

'id'와'name'을 혼동합니다. –

+2

HTML에 배열이 없으므로 PHP의 양식 데이터 분석 규칙에 혼동을 느낍니다. 동일한 ID를 가진 여러 요소를 가질 수 없으며, HTML 4, x 또는 XHTML ID에서 문자 '['또는']'를 사용할 수 없습니다. – Quentin

답변

2
다음과 같은 순수 자바 스크립트 코드를 사용할 수 있습니다

:

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

또는 jQuery 라이브러리에 : 나는의 크로스 브라우저 호환성에 대한 100 % 확실하지이기 때문에

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

내가 두 번째 선호를 첫 번째 해결책.

+0

완료! 고마워요 : D –

1

이 구문은 어떻게 사용합니까? 고유해야합니다 사실 ID로시, 구문이 유효하지 않습니다 귀하의 경우 두 번째

에서 첫 번째 매개 변수와 객체 mouseposition 및 foooBar이 [] -

onclick="myFunction(event, this)" 

당신이 어떤 중요한 데이터를 전달할 수있는이를 사용하여 동일한 id와 다른 foooBar [] (실제로 HTML은 배열에 대해 아무것도 모릅니다)

+0

이것은 이미 onClick 함수에 있습니다. 문제는 클릭되는 요소가 선택 상자라는 것입니다. 이 요소에서 필요한 모든 정보를 구문 분석 한 다음 입력 상자를 만듭니다. 그런 다음 배열의 특정 인덱스를 참조하는 링크를 만들 수 있도록 입력 상자 HTML 배열의 길이를 가져와야합니다. –

+0

잘못된 것입니다. HTML은 배열을 허용하며 항상 사용합니다. 필요에 따라 배열을 동적으로 확장합니다. 배열에 액세스하는 방법을 알지 못합니다. 백엔드에서 PHP를 통해 배열을 전달하면 $ _POST [ 'input'] [0] 등의 배열을받습니다. 질문은 javascript 또한 배열에 액세스 할 수 있습니까? –

+0

당신이 틀렸어, 이건 HTML의 feauture 아니지만 PHP는 - 그리고 이름이 아니라 ID에 적용됩니다 - 그래서 대답은 - 아니, 자바 스크립트, 왜냐하면 이것은 배열로 구문 분석되지 않기 때문에 (이것은 서버에서 PHP로 이루어집니다) - 당신은 document.getElementsByTagName ('*');에서 배열을 얻을 수 있습니다. (또는 부모 노드로 문서를 대체하십시오) – SergeS

0

document.getElementById는 HTML Collection을 반환하지 않으므로 length 속성을 갖지 않습니다.

관련 문제