阅读:24952回复:32
ie和firefox中的getElementsByName的不同[转载,遇到同样的问题]
ie和firefox中的getElementsByName的不同[转载,遇到同样的问题]
http://blog.donews.com/gzpbx/archive/2005/06/30/448968.aspx ie和firefox中的getElementsByName的不同 http://layout.mblogger.cn/posts/12331.aspx 在ie 中getElementsByName(“test“)的时候返回的居然是id=test的object数组,而使用firefox则返回的是name= test的object的数组。按照w3c的规范应该是firefox的实现是正确的,只是不解ie为什么要实现成为id=test的方式呢?“根据 NAME 标签属性的值获取对象的集合。” firefox和ie中的getElementByID倒是相同:获取对 ID 标签属性为指定值的第一个对象的引用。 以上转载,但这个问题我也遇到了,我就在TR中同时加上id 和 name,这样都可以用了~ |
|
|
1楼#
发布于:2005-07-20 11:39
明白了,高,有创意,以后就这么用了~
|
|
|
2楼#
发布于:2005-07-20 11:39
gzpbx: 不是get element,是get stylesheet <html> <head> <title>test</title> </head> <body> <style id="abc-style"> .abc {display: none} </style> <h1 class='abc'>test</h1> <script> function toggle() { var style = document.getElementById('abc-style'); style.disabled = !style.disabled; } </script> <P onclick="toggle()">click me </p> </body> </html> work with fx |
|
3楼#
发布于:2005-07-20 11:39
这个方法的确不错 |
|
4楼#
发布于:2005-07-20 11:39
|
|
|
5楼#
发布于:2005-07-20 11:39
gzpbx:如果IE 不支持这种 xpath 选取方法,那看来还是得用我最初用的那种tr上加上相同的id与name的方式来解决这个问题了! 如果只是 hide/show 操作的话,可以设一个独立 stylesheet,把同一 classname 的 object 设为 display:none。之后便可以透过改变这个 stylesheet 的 disabled property 改变属于这 classname 的 object 的 show/hide 状况。 |
|
|
6楼#
发布于:2005-07-20 11:39
如果IE 不支持这种 xpath 选取方法,那看来还是得用我最初用的那种tr上加上相同的id与name的方式来解决这个问题了!
如果能放在同一结构,show/hide就是针对一个container的操作,修改维护确实都很方便。但是不用table,布局感觉很麻烦。 有些时候我就会将1个大Table拆成3个Table,将中间那个Table show/hide,这样的做法也很ugly~ |
|
|
7楼#
发布于:2005-07-20 11:39
倒不是说样子ugly,是说做法ugly. 不能把同结构的东西组织在一起,你就不得不一个一个的修改各个成员的display. 如果能放在同一结构,show/hide就是针对一个container的操作,修改维护都很方便. |
|
8楼#
发布于:2005-07-20 11:39
猫头猪:比如说,你想得到所有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 } IE 不支持这种 xpath 选取方法。 在 ie 你可以在 tr 加入相同 id 现后用 document.getElementsbyName。 另外这个论坛好像是用 table 排版的,但我看也不太 ugly。 |
|
|
9楼#
发布于:2005-07-20 11:39
|
|
|
10楼#
发布于:2005-07-20 11:39
比如说,你想得到所有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。 |
|
11楼#
发布于:2005-07-20 11:39
XPath 我在google上查了一下,都是有关xml路径相关信息。不知道XPath&Class在我这里怎么用,斑竹可否指点迷津?
|
|
|
12楼#
发布于:2005-07-20 11:39
能给我们举几个不限于form而且用name又非常合适的常用例子么? |
|
13楼#
发布于:2005-07-20 11:39
gzpbx:很好,虽然很吵,但我还是从中学到不少东西! 用table排版很容易出现这样的问题。靠table排版,很难把本来应该在同一结构中的东西安排在一起。layout好像是容易做了,结构却无法组织。 在好的结构中,需要同时改变属性的东西可以放在一个block中,show/hide应该是很容易的事情。 另外,你这种情况可以用XPath。对同一类型的tr或者td设置class,然后通过XPath来得到分类组,也很方便。 不过,我还是主张你先丛设计上考虑非table排版。 |
|
14楼#
发布于:2005-07-20 11:39
夷,楼上几位都在用1.0.4呀~
|
|
|
上一页
下一页