使用dom时,如何在复选框列表中指定项目?

时间:2013-06-13 00:58:57

标签: wordpress vba ms-access dom checkbox

我目前正在使用Access 2003中的VBA自动使用wordpress编辑器,但是希望扩展自动化以包括选择类别,分类项目等。 这与Checkbox列表有关。 具有相同结构的示例如下:http://devblog.xing.com/frontend/the-checkbox-list/

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

我有点迷失于优雅的方法。我还没有尝试过,但我想我可以为每个selectit类获取innerhtml,检查它是否包含我的关键字an if if so使用一些字符串操作提取输入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>

1 个答案:

答案 0 :(得分:0)

感谢你的帮助@Tim Williams。我不确定它是否适用于优雅的前端,但它使我能够继续前进,我对列表的分层性质感到有点头疼,并且时间因为只支持层次结构的前两个级别而导致的折衷。它现在会做,但任何进一步的评论肯定是受欢迎的!

<强>地区

    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