로드하려는 시스템 목록에서 사용자가 선택할 수있는 확인란이 여러 개 있습니다. 체크 박스는 다음과 같이 생성됩니다.체크 박스 속성 액세스 문제 (클라이언트 측 vbscript)
'***************************************************************
' Print systems from DB in a table for the load page.
'***************************************************************
Function PrintSystemTable()
Set con = CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & systemsDBPath
Set systemRs = CreateObject("ADODB.Recordset")
systemRs.CursorLocation = adUseClient
Set sensorRs = CreateObject("ADODB.Recordset")
sensorRs.CursorLocation = adUseClient
document.write("<table class=satelliteList>")
document.write("<tr class=""tableHeader"">")
document.write("<td>Select</td>")
document.write("<td width=""100"">System Name</td>")
document.write("<td width=""100"">Description</td>")
document.write("<td width=""75"">Files</td>")
document.write("</tr>")
systemRs.Open "SELECT * FROM System ORDER BY SystemName", _
con, adOpenStatic, adLockOptimistic
do until systemRs.eof
document.write("<tr valign=""top"">")
document.write("<td>")
document.write("<INPUT TYPE=CHECKBOX NAME=""system"" VALUE=""" & systemRs("SystemName") & """>")
document.write("</td>")
document.write("<td>")
document.write(systemRs("SystemName"))
document.write("</td>")
document.write("<td>")
document.write(systemRs("Description"))
document.write("</td>")
document.write("<td>")
document.write(guiPath & systemRs("Satellite"))
sensorRs.Open "SELECT * FROM SystemSensors WHERE System='" & systemRs("SystemName") & "'", _
con, adOpenStatic, adLockOptimistic
do until sensorRs.eof
document.write("<br>" & guiPath & sensorRs("Sensor"))
sensorRs.movenext
loop
sensorRs.Close
document.write("</td>")
'adoDBRecordset("FieldName") & "<br>")
document.write("</tr>")
systemRs.movenext
loop
document.write("</table>")
con.Close
End Function
이들은 형태가 아닙니다. 내 이름 (시스템)을 사용하여 내 확인란에 액세스하려고 시도하고 어떤 항목이 선택되었는지 확인하기 위해 반복합니다.
'find the systems that are selected
'access an array of all the checkboxes?
Dim checkboxes
Set checkboxes = document.getElementsByName("system")
'For i=0 to UBound(checkboxes)
For Each chk in checkboxes
' If (checkboxes(i).checked = true) Then
If (chk.checked = true) Then
document.write("A checkbox is checked <br>")
Else
document.write("Unchecked <br>")
End If
'document.write(chk.value & "<br />")
Next
for 루프와 for 루프를 모두 반복하여 사용해 보았습니다. 나는 어느 쪽의 방법이라도 같은 실수를 얻는다. 결과는 다음과 같습니다.
지금 당장 데이터베이스에 두 개의 테스트 샘플이 있으므로 선택할 수있는 두 가지 항목이 있습니다. 첫 번째 항목을 선택하고 내 검사기 스크립트를 실행하는 버튼을 누르면 "확인란 선택됨"이 인쇄되고 확인 된 속성에 액세스 할 수 없다는 내용의 내 페이지에 오류 (권한 거부)가 표시됩니다. "선택 취소"가 인쇄되지 않습니다. 첫 번째 항목을 선택하지 않은 상태에서 두 번째 항목을 선택하면 "선택 취소됨"이 인쇄되고 "선택란이 선택되었습니다"가 인쇄되지 않습니다.
두 항목을 모두 선택하면 "선택란이 선택되었습니다"라는 문구가 한 번 인쇄되고 동일한 오류가 발생합니다.
항목 중 하나를 선택하지 않으면 체크되지 않은 항목 당 한 번이 아닌 한 번만 "선택 취소됨"이 인쇄되고 체크 된 속성에 액세스 할 수 없다는 동일한 권한 거부 오류가 표시됩니다.
확인한 값에 대한 테스트를 시작하기 전에 각 확인란의 값을 인쇄하려고했지만 value 속성에 액세스하려고 시도했을 때 권한이 거부되었습니다.
이상한 점은 여전히 권한이 거부 된 오류가 발생하더라도 첫 번째 요소에 대해 "작동 중"인 것입니다 (한 요소 만 적절한 메시지를 인쇄하므로). 이것은 내가 document.getElementsByName()을 제대로 사용하지 않는다고 (또는 배열을 반환합니까?), 아니면 제대로 반복하지 않고 있다고 생각하게 만듭니다. 아니면 저를 넘어서는 다른 수수께끼입니다.
이것은 CLIENT-SIDE 인 vbscript이며 ASP가 아닙니다. Javascript도 옵션이 아닙니다. 특정 이유로 클라이언트 측 vbscript에 HTML을 사용하고 있습니다. 내가 왜 그것을 사용하고 있으며 내가 동의하기 때문에 바보라고 말하면서 자신을 괴롭히지 마십시오. 나는 선택의 여지가 없다.
동일한 이름 (시스템)의 확인란을 어떻게 액세스하고 반복 할 수 있으며, 어떤 것이 선택되어 있는지 확인하고 그 값을 얻을 수 있습니까?
굉장! 감사! 나는 내 코드의 나머지 부분을 방해하는 document.write에 대해서 생각조차하지 않았다. – Lauren