只为关注 发表于 2011-1-24 15:37:39

AutoIt中的collection是什么类型啊?能通过下标来枚举吗?

举例来说吧,IE类中有一个_IETagNameGetCollection 的函数,功能是:返回一个对象中按标记名称或单元素索引的所有元素的对象集合.示例:
#include <IE.au3>
$oIE = _IE_Example ("form")
$oInputs = _IETagNameGetCollection ($oIE, "input")
For $oInput In $oInputs
    MsgBox(0, "Form Input Type", "Form: " & $oInput.form.name & " Type: " & $oInput.type)
Next

看说明这个函数返回的是一个集合,可是AutoIt中并没有集合的数据结构啊。但是又不能通过集合中的元素下标来取得这个元素,如这样的取法就是错误的:
$oInput = _IETagNameGetCollection ($oIE, "input")
但是这个集合中有多少元素又是已知的,可以通过legth得到,就是说下面的写法是正确的:
_IETagNameGetCollection ($oIE, "input").length

只为关注 发表于 2011-1-24 17:50:26

比如下面我的代码:
$oIE.document.getElementById("item1").getElementsByTagName('cite')就会出错。
但是同样的代码可以得到这个集合的长度
$oIE.document.getElementById("item1").getElementsByTagName('cite').length

_ddqs. 发表于 2011-1-24 18:32:20


For $i = 0 To $obj.length - 1
       
        ConsoleWrite(@LF& VarGetType($obj[$i]) &@CR)
       
Next

只为关注 发表于 2011-1-27 20:26:34

楼上的那样得到的类型还是Object而已。
我试验出来了,原来在AutoIt中是用item去集合元素的,是这样的写法:
$oIE.document.getElementById("item1").getElementsByTagName('cite').item(索引号).value

_ddqs. 发表于 2011-1-27 22:45:05

ls的筛选真有意思
getElementById("item1").getElementsByTagName('cite').
没用过

_ddqs. 发表于 2011-1-27 22:48:30

3楼写法跟你提到的一样
还是错误
访问数组元素用中括号[]
访问对象元素用小括号()#include <IE.au3>
$oIE = _IE_Example ("form")
$oInputs = _IETagNameGetCollection ($oIE, "input")

For $i = 0 To $oInputs.length - 1

        ConsoleWrite(@LF&" 名: "& $oInputs($i).name &" 值: "& $oInputs($i).value &@CR)
               
Next

sxd 发表于 2011-1-28 01:27:19

那不是au3里的类型 只能用for in 遍历
页: [1]
查看完整版本: AutoIt中的collection是什么类型啊?能通过下标来枚举吗?