看到 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)
function toggle() {
var style = document.getElementById('abc-style');
style.disabled = !style.disabled;
}
click me
[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。
Leave a reply