找回密码
 加入
搜索
查看: 2208|回复: 6

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

[复制链接]
发表于 2011-1-24 15:37:39 | 显示全部楼层 |阅读模式
举例来说吧,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")[0]
但是这个集合中有多少元素又是已知的,可以通过legth得到,就是说下面的写法是正确的:
_IETagNameGetCollection ($oIE, "input").length
 楼主| 发表于 2011-1-24 17:50:26 | 显示全部楼层
比如下面我的代码:
$oIE.document.getElementById("item1").getElementsByTagName('cite')[0]就会出错。
但是同样的代码可以得到这个集合的长度
$oIE.document.getElementById("item1").getElementsByTagName('cite').length
发表于 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
发表于 2011-1-27 22:45:05 | 显示全部楼层
ls的筛选真有意思
getElementById("item1").getElementsByTagName('cite').
没用过
发表于 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
发表于 2011-1-28 01:27:19 | 显示全部楼层
那不是au3里的类型 只能用for in 遍历
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 21:09 , Processed in 0.078349 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表