2008-09-25 5 views
1

내가 만들고있는 웹 응용 프로그램의 DOM 요소에 대한 참조 내에서 VBScript 변수를 사용하려고합니다. 여기에 코드의 영향을받는 지역의 간략한 발췌 :VBScript : DOM 요소 내에서 변수 사용

dim num 
num = CInt(document.myform.i.value) 
dim x 
x = 0 
dim orders(num) 
For x = 0 To num 
    orders(x) = document.getElementById("order" & x).value 
    objFile.writeLine(orders(x)) 
Next 

이 VBScript를에 처음으로 벤처, 나는 온라인 행동의 유형을 수행의 방법을 찾을 수 없어했다. 위의 코드에서 볼 수 있듯이 배열 (orders)을 만들려고합니다. 이 배열은 임의의 수의 값을 가질 수 있지만 그 수는 document.myform.i.value으로 지정됩니다. 따라서 For 루프는 ID가 + x 인 모든 텍스트 입력을 순환합니다 (즉, order0, order1, order2, order3, order4 등 num까지)

내 주문에 문제가있는 것 같습니다.) 라인, 나는 그것이 내가 의미하는 것을 getElementById("order" & x)으로 인식한다고 생각하지 않는다. 그리고 나는 그런 것을하는 방법을 정확하게 모른다. 누구든지 어떤 제안이 있습니까? 대단히 감사하겠습니다!

답변

0

나는 서버 측에서 document.getElementById()에 액세스 할 수 없으므로 이것이 클라이언트 측 VBScript라고 가정 할 수 있습니다.

try objFile.writeLine ("order"& x), 모든 요소가 문서에 있는지 확인하려면 소스를 확인하십시오.

[코멘트에 코드를 넣을 수 없기 때문에] 그건 이상합니다. 모든 것이 작동해야하는 것처럼 보입니다. 내가 생각할 수있는

만 다른 것입니다 : 당신은 서버 측 코드 대 클라이언트를 혼합하는 것처럼 보이는

orders(x) = document.getElementById("order" & x) 
objFile.writeLine(orders(x).value) 
+0

예, 클라이언트 쪽 VBScript입니다. 제안에 대해서는 요소가 문서에 있음을 확인했습니다. 나는 objFile.writeLine ("order"& x)이 내가 원하는 것을 할 수 있을지 확신하지 못한다. 그것은 'order'배열의 x 번째 값보다는 "order0", "order1"을 출력하는 것 같습니다. –

+0

맞습니다. 단지 문제를 디버그하는 데 도움이됩니다. 실제로 문서의 모든 요소를 ​​통과하는지 확인하십시오. document.myform.i.value가 반환하는 것을 테스트 했습니까? –

+0

document.myform.i.value는 0을 반환합니다. objFile.writeLine ("order"& x)은 예상대로 작동했습니다. 나는 순서로 시작하는 ID를 가진 시간에 내 페이지 5 개 요소가 있고, 그것은 반환 : order0 order1 order2 order3 order4 는 그래서는 DOM의 참조 변수를 사용하여 함께 할 수있는 뭔가가 있어야합니다, 아니 ? –

0

로 변경

orders(x) = document.getElementById("order" & x).value 
objFile.writeLine(orders(x)) 

.

objFile.writeLine(orders(x)) 

이는 서버에서만 수행 할 수있는 파일에 쓰는 VBScript입니다.

document.getElementById 

이것은 일반적으로 JavaScript로 실행되는 클라이언트 크기 코드입니다. 클라이언트의 IE에서 VBScript를 사용할 수는 있지만 거의 모든 사람이이 작업을 수행합니다.

서버에서는 일반적으로 request ("formFieldName")를 사용하여 DOM 요소가 아니라 양식 태그의 일부인 양식 필드를 참조합니다 (기존 ASP를 사용한다고 가정).

는이처럼 HTML에서 그것을 포함 할 것 (당신이 페이지를 빌드 할 때) 클라이언트에 표시되는 서버 측 물건을 만들려면 :

<% = myVariable %> 

또는 같은

(코드 블록의 일부로서) :

document.write myVariable 
+0

글쎄요, 여기 거래가 있습니다 : 제가 만들고있는 앱은 제 개인적인 용도를위한 것입니다. 그것은 '서버'에 거주하지 않고 내 로컬 하드 드라이브에 앉아 있습니다. 결과적으로 objFile.writeLine (orders (x)) AND document.getElementById가 작동합니다. 그것은 단지 ID 내에서 변수의 사용을 인식하지 못합니다. –

1

이 작업을 수행 할 수있었습니다. 시간과 노력에 감사드립니다.여기에 나를 위해 그것을 해결 것입니다 :

보다는 사용

document.getElementById("order" & x).value 

내가 변수로 전체 ID 설정 :

temp = "order" & x 
document.getElementById(temp).value 

이 예상대로 작동하는 것입니다. 다시 한 번,이 시간과 노력에 많은 감사를드립니다!

0

루프를 약간 변경하지 않아도됩니까?

For x = 0 To num - 1 

E.G. 4 개 항목을 사용하여 0에서 3까지 반복해야합니다.