使用GetElementById </h>从特定的<h>元素中提取文本

时间:2012-12-03 10:55:16

标签: html dom vbscript

我创建了一个查看XML数据文件的VBS脚本文件。 在XML数据文件中,我需要的HTML数据嵌入在

<![CDATA[]'other interesting HTML data here'].

我使用XPATH删除了这个HTML数据,然后插入到一个Div对象(myDiv)元素中,该元素表示为一个变量(它没有写入文档)。 例如,myDiv.innerHTML的内容如下所示;

<table> 
<tr><td>text in cell 1</td></tr> 
<tr><td><h1 id="myId1">my text for H1</h></td><tr> 
<tr><td><h2 id="myId2">my text for h2</h></td></tr> 
</table> 

我最初想做的只是选择ID与“myId1”匹配的相应标签,因此,我使用了这样的语句;

MyIdText = MyDiv.getElementById("myId1") 

但是,我使用的应用程序说“Err 438,Object不支持此属性或方法”。 我是一个有代码的新手,可以理解一些基本的基金会,但当它变得有点复杂时(抱歉)有点迷失。我已经查看了这个主板上的其他帖子,并且所有这些帖子似乎都与HTML和Javascript有关,而不是VBScript(我使用的应用程序不允许使用Java Script)。 我使用的代码错了吗?

2 个答案:

答案 0 :(得分:0)

要使用getElementById(),您应该编写:document.getElementById(“myId1”)。这样您就可以告诉浏览器在'document'中搜索指定的ID。您的变量未定义且未附加此方法,因此您的代码将生成上述错误。

提取特定H元素内的文本:

MyIdText = document.getElementById("myId1").textContent;

答案 1 :(得分:0)

非常感谢你的帮助,不幸的是,我知道一点VBS,甚至还有关于DOM的小问题,我正试图通过实验来学习。我正在使用的环境/应用程序中存在某些限制(它称为ASCE及其用于管理安全案例的工具 - 但现在这并不重要)。 但是,为了比较苹果和苹果,我尝试在HTML页面中进行实验,以便更好地理解DOM / VBS命令实际可以做什么。我已经获得了一些部分成功,但仍然无法理解为什么它会落在它的位置。 这是我正在试验的确切文件,我为每个部分添加了评论文本;

<html>
<head>

<table border=1>
    <tr>
        <td>text in cell 1</td>
    </tr>

    <tr>
        <td><h1 id="myId1">my text for H1</h1></td>
    </tr>

    <tr>
        <td><h1 id="myId2">my text for h2</h2></td>
    </tr>
</table>

<script type="text/vbscript">
DoStuff

Sub DoStuff 

    ' Section 1: Get a node with the Id value of "myId1" from the above HTML
    ' and assign it to the variable 'GetValue'
    ' This works fine :-)
    Dim GetValue
    GetValue = document.getElementById("myId1").innerHTML
    MsgBox "the text=" & GetValue   

    ' Section 2: Create a query that assigs to the variable 'MyH1Tags' to  all of the <h1> 
    ' tags in the document.
    ' I assumed that this would be a 'collection of <h1> tags so I set up a loop to itterate
    ' through however many there were, but this fails as the browser says that this object 
    ' doesn't support this property or method - This is where I am stuck    

    Dim MyH1Tags    
    Dim H1Tag
    MyH1Tags = document.getElementsByTagName("h1") ' this works

    For Each H1Tag in MyH1Tags ' this is where it falls over
        MSgbox "Hello"
    Next


    ' Section 3: Create a new Div element 'NewDiv' and then insert some HTML 'MyHTML'
    ' into 'NewDiv'. Create a query 'MyHeadings' that extracts all h1 headings from 'NewDiv'
    ' then loop round for however many h1 headings there are in 'MyHeadings'
    ' and display the text content. This works Ok

    Dim NewDiv  
    Dim MyHTML  
    Dim MyHeadings
    Dim MyHeading
    Set NewDiv = document.createElement("DIV")      
    MyHTML="<h1 id=""a"">heading1</h1><h2 id=""b"">Heading2</h2>"  
    NewDiv.innerHTML=MyHTML
    Set MyHeadings = NewDiv.getElementsByTagName("h1")

    For Each MyHeading in MyHeadings
        Msgbox "MyHeading=" & MyHeading.innerHTML
    Next


    'Section 4: Do a combination of Section 1 (that works) and Section 3 (that works)
    ' by creating a new Div element 'NewDiv2' and then paste into it some HTML
    ' 'MyHTML2' and then attempt to create a query that extracts  the inner HTML from 
    ' an id attribute with the value of "a". But this doesnt work either.
    ' I have tried "Set MyId = NewDiv2.getElementById("a").innerHTML" and
    ' also tried "Set MyId = NewDiv2.getElementById("a")" and it always falls over 
    ' at the same line.
    Dim NewDiv2 
    Dim MyHTML2     
    Dim MyId

    Set NewDiv2 = document.createElement("DIV")     
    MyHTML2="<h1 id=""a"">heading1</h1><h2 id=""b"">Heading2</h2>"  
    NewDiv2.innerHTML=MyHTML

    MyId = NewDiv2.getElementById("a").innerHTML

End Sub

</script>
</head>

<body>