【问题标题】:does document.getElementsByTagName work in vbscript?document.getElementsByTagName 在 vbscript 中工作吗?
【发布时间】:2018-02-05 21:31:06
【问题描述】:

嗯,它有效,只是没有产生任何有价值的东西:

elems = document.getElementById("itemsTable").getElementsByTagName("TR") 
for j = 0 to ubound(elems) - 1      
   ' stuff 
next

好吧,那行不通,显然 elems 是一个对象,而不是像你在那个 花哨的 javascript 中那样的数组。我坚持使用 vbscript。

那么我该怎么做才能在 vbscript 中迭代表中的所有行?

编辑:是的,它是 vbscript,而且很烂。我在这里别无选择,所以不要说“使用 jQuery !!”。

【问题讨论】:

  • 只是出于好奇,为什么要使用 vbscript?
  • 因为这是我老板告诉我要使用的。
  • 实际上你没有在 Javascript 中得到一个数组 - 你得到一个 NodeList。有点不同。
  • 告诉你的老板,他/她错了。当 IE 是最好的浏览器时,在 vbscript 中编写浏览器脚本甚至不是一个好主意。
  • @Joel:呃,告诉我吧。好消息:4 天后,不再有 vbscript(找到新工作)。

标签: html vbscript


【解决方案1】:

正如您正确指出的那样,getElementsByTagName 不会返回数组,因此UBound() 将无法处理它。将其视为一个集合。

For-Eaching 通过它应该可以工作:

 Set NodeList = document.getElementById("itemsTable").getElementsByTagName("TR") 
 For Each Elem In NodeList
  ' stuff 
  MsgBox Elem.innerHTML
 Next

【讨论】:

  • 太好了,谢谢。我从来没有弄清楚为什么有时你必须设置一些东西,而其他一些你不需要。
  • 如果可以的话,我会悬赏,这样你就可以得到更多的答案。回答关于 SO 的 vbscript 问题是一项吃力不讨好的工作。
  • 哈哈,这很酷。顺便说一句,请查看此页面以了解有关设置的问题:empinstitute.org/caspdoc/html/vbscript_set_statement.htm
  • 该死的我又忘记了“Set”。 @jcollum(或其他人),您在尝试传递对象引用时需要使用它。否则,您将传递一个变体,很可能是一个字符串(值或名称),但肯定不是您想要的
【解决方案2】:

如果你有 IE8+,你可以使用"item" method。所以应该是:

Dim elem: Set elem = document.getElementById("itemsTable").getElementsByTagName("TR").item(1);

【讨论】:

    【解决方案3】:

    elems 在 JavaScript 中也不是数组,it is a NodeList,它只是碰巧与 JavaScript Array 对象共享一些属性。

    我不知道 VB,但我认为你可以做到:

    for j = 0 to elems.length - 1      
       ' stuff 
    next
    

    【讨论】:

    • 请注意,我说“显然 elems 是一个对象”。对象类型没有长度。
    • 哇。听起来 VB 的 DOM 实现有问题。
    猜你喜欢
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 2011-02-07
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多