У меня есть несколько флажков, где пользователь может выбрать из списка систем, которые он хочет загрузить. Флажки созданы так:
'***************************************************************
' 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
Я попытался выполнить итерацию, используя как для, так и для каждого цикла. Я получаю ту же ошибку в любом случае. Вот что происходит:
Сейчас в моей базе данных есть два тестовых образца, поэтому я могу выбрать две вещи. Если я выберу первый элемент и нажму кнопку, на которой запускается сценарий проверки, на странице будет напечатано «Флажок отмечен», и я получу сообщение об ошибке («Отказано в доступе»), говорящее о том, что я не могу получить доступ к свойству флажка. Он НЕ печатает «Не проверено». Если я выбираю свой ВТОРОЙ элемент, оставляя первый элемент не отмеченным, он печатает «Не проверено» и не печатает «Флажок отмечен».
Если я выбираю оба элемента, он печатает «Флажок отмечен» ОДИН РАЗ и выдает ту же ошибку.
Если я не выбираю ни один из элементов, он печатает «НЕПРОВЕРЕНО» ОДИН РАЗ (вместо одного раза для непроверенного элемента), и я получаю ту же ошибку отказа в разрешении, сообщающую мне, что я не могу получить доступ к отмеченному свойству.
Прежде чем я начал тестировать проверенное значение, я попытался напечатать значение каждого флажка, но попытка получить доступ к свойству значения также дала мне разрешение на отказ.
Странно то, что кажется, что он «работает» для первого элемента (поскольку он напечатает соответствующее сообщение только для одного элемента), даже если он по-прежнему выдает ошибку «Отказано в доступе». Это заставляет меня поверить, что я либо не правильно использую document.getElementsByName () (возвращает ли он массив?), Либо неправильно выполняю итерацию ... или какая-то другая загадка, которая мне не подходит.
Это vbscript КЛИЕНТА, а не ASP. Javascript также не вариант; Я использую клиентский vbscript с HTML по определенной причине. Не беспокойтесь, почему я использую это, и скажите мне, что это глупо, потому что я согласен; У меня нет выбора.
Как я могу получить доступ к своим флажкам с тем же именем (системой) и просмотреть их, посмотреть, какие из них проверены, и получить их значение?