1

我目前在 access 2003 中使用 VBA 自动使用 wordpress 编辑器,但想扩展自动化以包括选择类别、分类项目等。那就是复选框列表。具有相同结构的示例在这里:http ://devblog.xing.com/frontend/the-checkbox-list/

我的列表基于地理实体的层次结构:在本地数据库中,我可能有与当地相关的数据:例如阿尔及利亚。我希望能够使用(即作为 SHDocVw.InternetExplorer)ie.document.what?

对于优雅的方法,我有点迷失。我还没有尝试过,但我想我可以获取每个 selectit 类的 innerhtml,检查它是否包含我的关键字,如果是这样,通过一些字符串操作提取输入 id,然后使用 ie.document.getelementbyid (“随便”)。单击“检查”或“切换”

但是有更好的方法吗?

(最终我将不得不看看如何连接到远程数据库并从那里的表中拖动 tag_id - 但我认为这会更快,特别是因为更大意义上的自动化功能已经存在)

任何指针表示赞赏!

<ul id="localitieschecklist" class="categorychecklist form-no-clear"
data-wp-lists="list:localities">
<li id="localities-8" class="popular-category">
<label class="selectit">
<input id="in-localities-8" type="checkbox" name="tax_input[localities][]" value="8"> </input>
Africa
</label>
<ul class="children"><li id="localities-96">
<label class="selectit"><input id="in-localities-96" type="checkbox" name="tax_input[localities][]" value="96"></input>
Algeria
</label>
4

1 回答 1

0

感谢您的帮助@蒂姆·威廉姆斯。我不确定这在优雅方面是否有效,但它使我能够继续前进,我对列表的层次结构感到有点头疼,而且时间决定了只支持层次结构的前两个级别的折衷方案. 现在就可以了,但当然欢迎任何进一步的评论!

地区

    If artClassLocalities <> "" And Not IsNull(artClassLocalities) Then
        artClasses = Split(artClassLocalities, ",")
        Set Element = .Document.getElementByID("localitieschecklist")

        For i = 0 To Element.childNodes.Length - 1 'the element collection represents the globe


           'popular category items (6) one for each landmass
            Set Landmass = Element.childNodes(i)
           'landmass has 2 nodes
           'child 1 is the selectitnode node 0 (item 1)
            If InStr(1, artClassLocalities, Right(Landmass.childNodes(0).innerText, Len(Landmass.childNodes(0).innerText) - 1)) Then
                Call Landmass.childNodes(0).childNodes(0).setAttribute("checked", True)
            Else
                Call Landmass.childNodes(0).childNodes(0).setAttribute("checked", False)
            End If

            For j = 0 To Landmass.childNodes(1).childNodes.Length - 1 'the children are the countries
                Set Country = Landmass.childNodes(1).childNodes(j)    ' a given child is a country

                If InStr(1, artClassLocalities, Right(Country.childNodes(0).innerText, Len(Country.childNodes(0).innerText) - 1)) Then
                    Call Country.childNodes(0).childNodes(0).setAttribute("checked", True)
                Else
                    Call Country.childNodes(0).childNodes(0).setAttribute("checked", False)
                End If
               'Support for Subregions not yet functional
               'For k = 0 To Country.childNodes(1).childNodes.Length - 1
                'Set PAndADiv = Country.childNodes(j)

            Next
        Next
    End If
于 2013-06-14T15:47:12.050 回答