请教一条语句的语法

wuhuar 2008-11-18 04:55:35
在webbrower中有一个属性是这样的

thisform.webbrower1.document.all.length
这个长度即是表示all数组有多少个元素,可以这样引用其中的元素thisform.webbrower1.document.all[1]


thisform.webbrower1.document.getelementsbytagname("A").length
这个是表示网页中有多少个A标签,如果我想引用其中的一个元素,
thisform.webbrower1.document.getelementsbytagname("A")[1]
~~~~~
这句会报错!

我就是把thisform.webbrower1.document.getelementsbytagname("A")赋值给一个变量A,也不可以写成A[1]

thisform.webbrower1.document.getelementsbytagname("A")好象是一个集合,但为什么ALL又可以直接带下标呢?

不知这种用法应怎样写?
...全文
123 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cbl518 2008-11-20
  • 打赏
  • 举报
回复
不知道楼主想获得什么样的标签是什么内容!

最起码有一点,你对的《getelementsbytagname》概念,理解是错误的!

thisform.webbrower1.document.getelementsbytagname("A")
返回来的是:所有的超连接元素(对象)集合,它的元素中,也不包含有什么标签属性。
它更不能在 vfp 中,用数组的方法去调用它。

以上代码所提到的对象,都不是和你的:
thisform.webbrower1.document.getelementsbytagname("A")
对象是同一个集合的。

你要表述清楚你想要的是什么信息???
C# 的语法和 vfp 有很大的区别,但是同一个对象,获的的信息都是相同的。

它们都不会返回超连接,屏幕上的提示文字的。
十豆三 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 apple_8180 的回复:]
Thisform.webbrower1.Document.getelementsbytagname("a")
这个红色a应该叫保留字还是叫什么,好像这样写不规范,
[/Quote]

不能取A,其他的可以。


Create Cursor oInfo (oName C(40),oType C(40),oVal C(100))
m.oItems=Thisform.webbrower1.Document.getelementsbytagname("Input")
For Each m.oItem In m.oItems
Insert Into oInfo (oName,oType,oVal) Values (m.oItem.Name,m.oItem.Type,m.oItem.Value)
Endfor
Locate
Browse
wuhuar 2008-11-19
  • 打赏
  • 举报
回复
谢谢5楼,如果用5楼的方法全部遍历,我可以用
for i=0 to thisform.webbrower1.document.all.length-1
xxx=thisform.webbrower1.document.all[i].interhtml
endfor
Foxer 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuhuar 的回复:]
谢谢5楼,如果用5楼的方法全部遍历,我可以用
for i=0 to thisform.webbrower1.document.all.length-1
xxx=thisform.webbrower1.document.all[i].interhtml
endfor
[/Quote]

interhtml 是文本,没有属性,需要自己解析文本,不是很麻烦?
Foxer 2008-11-18
  • 打赏
  • 举报
回复
getelementsbytagname获取的是一个集合,但是不支持Index,在.NET中可以用IEnumrator获取读取器,用foreach读取

不过在VFP下也不是没有办法,我现在的机器上打不开VFP,你试验一下
thisform.webbrower1.document是一个HTMLDocument类
它有两个专门用来枚举子集(HtmlNode)的属性:
firstChild:获取第一个儿子
nextSibling:获取下一个Node

比如:
doc = thisform.webbrower1.document
node = thisform.webbrower1.document.firstChild
do while node !=null
node = node.nextSibling
enddo

其下的每个儿子都是node,这样你可以通过node的nodeName、nodeValue、nodeType等来处理这个数据。速度上有损失,但可以解决问题。

以上为参考,因为我只能在C#中实现,所以在VFP中的效果我不知道如何。
wuhuar 2008-11-18
  • 打赏
  • 举报
回复
谢谢上面两位,我试了两种办法,都没用

我用
ln1=Thisform.webbrower1.Document.getelementsbytagname("A")
messagebox(str(ln1))
可以得到有多少个A标签
所以这样用没什么问题

上面两种用法都是报错,OLE error code 0x80020006: Unknown name
十豆三 2008-11-18
  • 打赏
  • 举报
回复
Thisform.webbrower1.Document.getelementsbytagname("a")
这个红色a应该叫保留字还是叫什么,好像这样写不规范,
十豆三 2008-11-18
  • 打赏
  • 举报
回复
loInputNum=Thisform.webbrower1.Document.getelementsbytagname("Input")
lnInputNum=loInputNum.Length
For lnI=1 To lnInputNum
?loInputNum.Item(lnI).Value
Endfor
lainY7mail 2008-11-18
  • 打赏
  • 举报
回复
赋给以个变量后用
FOR EACH 试试

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧