看到 http://www.firefox.net.cn/newforum/viewtopic.php?t=7441&postdays=0&postorder=asc&&start=0

讨论有点意思,记得我佛山人很早就发现 MSDN 中白屏黑字地写着 getElementsByName 返回 “name 和 id”。

要求:

我本来的目的是,一个Table中有7,8个tr,我需要动态的将其中4,5个tr display=none/block。但是我又不想给每个tr都定义一个id,所以我想到了给这4,5个tr一个共同的name然后用 getElementsByName来返回一个数组,这样用循环操作每一个tr方便点,可是后来发祥ie不支持,于是乎才有了这篇文章。我的方法当然不好了,但是现在也没有找到好的方法,除非给每一个tr都加一个id!!

abc@home提出的解决方案

如果只是 hide/show 操作的话,可以设一个独立 stylesheet,把同一 classname 的 object 设为 display:none。之后便可以透过改变这个 stylesheet 的 disabled property 改变属于这 classname 的 object 的 show/hide 状况。

猫头猪的测试代码(ff only)

运行代码 [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

延伸思考:

比如说,你想得到所有class属性是”abc”的tr,用这个就可以了:

代码:

alltr = document.evaluate(”//tr[@class='abc']“, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

for (var i = 0; i < alltr.snapshotLength; i++) {

tr = alltr.snapshotItem(i);

// do something with tr

}

教程么,看这个也可以:

http://www.w3schools.com/xpath/default.asp

IE里XPath的用法应该大同小异,查查msdn好了。

不过还是强烈建议你考虑非table排版。不然怎么做都很ugly。