设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2651|回复: 3
打印 上一主题 下一主题

[多媒体] 浅谈DOM之四:选择器(3)

[复制链接]
跳转到指定楼层
1#
发表于 2015-7-3 16:41:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 roych 于 2015-7-6 17:31 编辑

       看完前面帖子的版友,可能会问,我想选择一个含有class属性的DIV的嵌套第N层的P元素怎么办?。用byclass的方法要遍历,用bytagname的方法也要遍历,都很麻烦。有没有高级选择器呢?
      答案是:有。那就是鼎鼎有名的CSS选择器。             ——普及一下,CSS(Cascading Style Sheets,样式表),主要用于修饰网页。为了精准地修饰页面元素,所以从一开始,CSS就制定了一套严格的选择器标准。而DOM里的高级选择器querySelector跟querySelectorAll与CSS选择器的写法完全一致。
       常见的CSS选择器见下表(CSS3的支持度还不够广泛,暂不列出来。事实上,冒号选择器也是较少使用的):
选择器
例子
例子描述
.class
.intro
选择 class="intro" 的所有元素。
#id
#firstname
选择 id="firstname" 的所有元素。
*
*
选择所有元素。
element
p
选择所有 <p> 元素。
element,element
div,p
选择所有 <div> 元素和所有 <p> 元素。
element element
div  p
选择 <div> 元素内部的所有 <p> 元素。
element>element
div>p
选择父元素为 <div> 元素的所有 <p> 元素。
element+element
div+p
选择紧接在 <div> 元素之后的所有 <p> 元素。
[attribute]
[target]
选择带有 target 属性所有元素。
[attribute=value]
[target=_blank]
选择 target="_blank" 的所有元素。
[attribute~=value]
[title~=flower]
选择 title 属性包含单词 "flower" 的所有元素。
[attribute|=value]
[lang|=en]
选择 lang 属性值以 "en" 开头的所有元素。
:link
a:link
选择所有未被访问的链接。
:visited
a:visited
选择所有已被访问的链接。
:active
a:active
选择活动链接。
:hover
a:hover
选择鼠标指针位于其上的链接。
:focus
input:focus
选择获得焦点的 input 元素。
:first-letter
p:first-letter
选择每个 <p> 元素的首字母。
:first-line
p:first-line
选择每个 <p> 元素的首行。
:first-child
p:first-child
选择属于父元素的第一个子元素的每个 <p> 元素。
:before
p:before
在每个 <p> 元素的内容之前插入内容。
:after
p:after
在每个 <p> 元素的内容之后插入内容。
:lang(language)
p:lang(it)
选择带有以 "it" 开头的 lang 属性值的每个 <p> 元素。
       好了,需要注意的是,如果使用querySelector选择器,那么不管符合条件的DOM对象有多少,只返回第一个。——如果找不到则会出错。而querySelectorAll则会返回全部符合条件的DOM对象。
  1. Private Sub cmdselect_Click()
  2. Dim wb As WebBrowser
  3. Dim doc As HTMLDocument

  4. Set wb = Me.WebBrowser0.Object
  5. Set doc = wb.Document

  6. MsgBox doc.querySelector(".test>p").innerText
  7. End Sub

  8. Private Sub cmdselectAll_Click()
  9. Dim wb As WebBrowser
  10. Dim doc As HTMLDocument

  11. Set wb = Me.WebBrowser0.Object
  12. Set doc = wb.Document

  13. MsgBox doc.querySelectorAll("div>p").Item(1).innerText
  14. End Sub
复制代码
上一节 下一节



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2015-7-4 10:09:57 | 只看该作者
谢谢分享!

呵呵,允许我多说几句.斑竹来点更给力的吧,你写这些太大才小用了.我觉得你是在浪费时间那,现在web应用广泛,而acc(vbasic,不在acc而是这门语言)在这方面功能不强,大家需要一个v-basic语言到js/php/asp等的翻译器来扩展.如果能用v-basic(非s)语言写web应用,会不会是件不错的事?省去很多再学习的时间.我看站长也没动静,你试试怎么样?
3#
发表于 2015-7-4 11:25:15 | 只看该作者
VB已死,有事烧纸!

Dom还是很有必要普及。
至于原因,众说纷芸。

至于vb6直接写服务端。呵呵:
两种途径:
1、寻找VB的fastcgi库。fastcgi允许任何语言直接写web服务端。

2、寻找途径免注册启动的vb的dll,iis如果直接能使用免注册启动的vb的dll,那性能绝对比c#或vb.net写的asp.net要快。

最后我说一句。mshtml没有想象的那么弱。谁说vba不能直接在mshtml中当作脚本来用呢?别光被js给限制住了。

点击这里给我发消息

4#
发表于 2015-7-7 14:16:08 | 只看该作者
DOM CSS DIV JQUERY 这些是通用的,不一定局限于Access,这些知识是非常有用的,不管是c/s 还是b/s
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-14 16:10 , Processed in 0.092646 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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