1

修改后的代码。
错误消息:Object required:'document.getElementsByName(...)(...)'
行:59
字符:13
错误代码:if document.getElementsByName("chk" & arrName(ii))(0).Checked then

<SCRIPT language="VBScript">
Dim arrName(),arrExe()

Set objFS   = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.OpenTextFile("software/software.txt")
strSoftware = objFile.ReadAll
objFile.Close

arrSplit = Split(strSoftware, vbNewLine)

i = 0

For Each strLine in arrSplit
  ReDim Preserve arrName(i + 1)
  ReDim Preserve arrExe(i + 1)
  arrName(i) = TRIM(Left(strLine,InStr(strLine,";")-1))
  arrExe(i) = TRIM(Right(strLine,InStr(strLine,";")))
  strHTML = CheckboxArea.InnerHTML
  strHTML = strHTML & "<BR><INPUT TYPE='CHECKBOX' VALUE='" & arrName(i) & "' NAME ='chk'" & arrName(i) & " />" & arrName(i)
  CheckboxArea.InnerHTML = strHTML
  i = i + 1
Next

Sub Confirm
    Dim objForm, Element
    set objForm=document.forms("SoftwareSelect")
    set Element=objForm.elements
    i=0
    ii=0

    for i=0 to Element.length
        if Element(i).type="checkbox" then
            if document.getElementsByName("chk" & arrName(ii))(0).Checked then 
                MsgBox(arrName(ii) & " is checked.")
            end if
        ii = ii + 1
        end if
    next
End Sub
</SCRIPT>
4

2 回答 2

0

您的代码无法正常工作。你说 arrName 是一个字符串数组。字符串不是复选框对象。解决方案是如此接近。

只需在代码行上方看一点。这应该有效,不是吗?

if Element(i).type="checkbox" then
    ii = ii + 1
    if "chk" & Element(i).Checked then 
        MsgBox(arrName(ii) & " is checked.")
    end if
end if
于 2013-07-27T19:13:00.930 回答
0

像这样的表达:

"chk" & arrName(ii).Checked

在将该值连接到字符串之前,将首先尝试获取Checked存储在ii数组字段中的对象的属性值。您实际上要做的是获取具有名称的元素,然后获取该元素的属性值。尝试这个:arrName"chk""chk" & arrName(ii)Checked

If document.getElementsByName("chk" & arrName(ii))(0).Checked Then
  ...
  • "chk" & arrName(ii)name标识要获取的元素的属性值。
  • document.getElementsByName(...)返回其name属性具有该值的所有元素的集合。
  • ...(0).Checked从该集合中选择第一个元素并返回其Checked属性的值。

附带说明:您可能希望使用id属性而不是name属性来标识页面中的元素,因为根据定义,该属性在页面中必须是唯一的。这样,您可以直接检索特定元素,getElementById()而不必先将其从集合中取出。

编辑:如果你想遍历页面中的所有复选框,这样的事情可能更合适:

For Each tag In document.getElementsByTagName("input")
  If LCase(tag.Type) = "checkbox" Then
    'do stuff
  End If
Next
于 2013-07-27T19:14:20.983 回答