gzpbx
狐狸大王
狐狸大王
  • UID1527
  • 注册日期2004-12-29
  • 最后登录2009-06-30
  • 发帖数410
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:24952回复:32

ie和firefox中的getElementsByName的不同[转载,遇到同样的问题]

楼主#
更多 发布于:2005-07-20 11:39
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,这样都可以用了~
如果你爱上了一朵生长在一颗星星上的花,那么夜间你看着天空就感到甜蜜愉快。所有的星星上都好象开着花。
gzpbx
狐狸大王
狐狸大王
  • UID1527
  • 注册日期2004-12-29
  • 最后登录2009-06-30
  • 发帖数410
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
1楼#
发布于:2005-07-20 11:39
明白了,高,有创意,以后就这么用了~
如果你爱上了一朵生长在一颗星星上的花,那么夜间你看着天空就感到甜蜜愉快。所有的星星上都好象开着花。
猫头猪
狐狸大王
狐狸大王
  • UID163
  • 注册日期2004-11-25
  • 最后登录2005-12-04
  • 发帖数595
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
2楼#
发布于:2005-07-20 11:39
gzpbx

我也想用这个方法,可惜没有getElementsByClass呀~
回到原帖

不是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
猫头猪
狐狸大王
狐狸大王
  • UID163
  • 注册日期2004-11-25
  • 最后登录2005-12-04
  • 发帖数595
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
3楼#
发布于:2005-07-20 11:39

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

这个方法的确不错
gzpbx
狐狸大王
狐狸大王
  • UID1527
  • 注册日期2004-12-29
  • 最后登录2009-06-30
  • 发帖数410
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
4楼#
发布于:2005-07-20 11:39
abc@home
如果只是 hide/show 操作的话,可以设一个独立 stylesheet,把同一 classname 的 object 设为 display:none。之后便可以透过改变这个 stylesheet 的 disabled property 改变属于这 classname 的 object 的 show/hide 状况。
回到原帖


我也想用这个方法,可惜没有getElementsByClass呀~
如果你爱上了一朵生长在一颗星星上的花,那么夜间你看着天空就感到甜蜜愉快。所有的星星上都好象开着花。
abc@home
千年狐狸
千年狐狸
  • UID6047
  • 注册日期2005-05-16
  • 最后登录2011-01-01
  • 发帖数1681
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
5楼#
发布于:2005-07-20 11:39
gzpbx:如果IE 不支持这种 xpath 选取方法,那看来还是得用我最初用的那种tr上加上相同的id与name的方式来解决这个问题了!

如果能放在同一结构,show/hide就是针对一个container的操作,修改维护确实都很方便。但是不用table,布局感觉很麻烦。

有些时候我就会将1个大Table拆成3个Table,将中间那个Table show/hide,这样的做法也很ugly~
回到原帖

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



WINXP SP2 MAXTHON (UNICODE) PROXOMITRON
gzpbx
狐狸大王
狐狸大王
  • UID1527
  • 注册日期2004-12-29
  • 最后登录2009-06-30
  • 发帖数410
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
6楼#
发布于:2005-07-20 11:39
如果IE 不支持这种 xpath 选取方法,那看来还是得用我最初用的那种tr上加上相同的id与name的方式来解决这个问题了!

如果能放在同一结构,show/hide就是针对一个container的操作,修改维护确实都很方便。但是不用table,布局感觉很麻烦。

有些时候我就会将1个大Table拆成3个Table,将中间那个Table show/hide,这样的做法也很ugly~
如果你爱上了一朵生长在一颗星星上的花,那么夜间你看着天空就感到甜蜜愉快。所有的星星上都好象开着花。
猫头猪
狐狸大王
狐狸大王
  • UID163
  • 注册日期2004-11-25
  • 最后登录2005-12-04
  • 发帖数595
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
7楼#
发布于:2005-07-20 11:39

IE 不支持这种 xpath 选取方法。

在 ie 你可以在 tr 加入相同 id 现后用 document.getElementsbyName。

另外这个论坛好像是用 table 排版的,但我看也不太 ugly。

倒不是说样子ugly,是说做法ugly.
不能把同结构的东西组织在一起,你就不得不一个一个的修改各个成员的display.
如果能放在同一结构,show/hide就是针对一个container的操作,修改维护都很方便.
abc@home
千年狐狸
千年狐狸
  • UID6047
  • 注册日期2005-05-16
  • 最后登录2011-01-01
  • 发帖数1681
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
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 
}

教程么,看这个也可以:
http://www.w3schools.com/xpath/default.asp

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

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

IE 不支持这种 xpath 选取方法。

在 ie 你可以在 tr 加入相同 id 现后用 document.getElementsbyName。

另外这个论坛好像是用 table 排版的,但我看也不太 ugly。



WINXP SP2 MAXTHON (UNICODE) PROXOMITRON
abc@home
千年狐狸
千年狐狸
  • UID6047
  • 注册日期2005-05-16
  • 最后登录2011-01-01
  • 发帖数1681
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
9楼#
发布于:2005-07-20 11:39
猫头猪
能给我们举几个不限于form而且用name又非常合适的常用例子么?
回到原帖

meta, a, frame 算不算??



WINXP SP2 MAXTHON (UNICODE) PROXOMITRON
猫头猪
狐狸大王
狐狸大王
  • UID163
  • 注册日期2004-11-25
  • 最后登录2005-12-04
  • 发帖数595
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
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。
gzpbx
狐狸大王
狐狸大王
  • UID1527
  • 注册日期2004-12-29
  • 最后登录2009-06-30
  • 发帖数410
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
11楼#
发布于:2005-07-20 11:39
XPath 我在google上查了一下,都是有关xml路径相关信息。不知道XPath&Class在我这里怎么用,斑竹可否指点迷津?
如果你爱上了一朵生长在一颗星星上的花,那么夜间你看着天空就感到甜蜜愉快。所有的星星上都好象开着花。
猫头猪
狐狸大王
狐狸大王
  • UID163
  • 注册日期2004-11-25
  • 最后登录2005-12-04
  • 发帖数595
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
12楼#
发布于:2005-07-20 11:39

虽然 name 的确算不上大部分 object 适用,但 name 是除了 event handler 及 其他几个 attribute 外最通用的 attribute,最重要是不限用于 form。

能给我们举几个不限于form而且用name又非常合适的常用例子么?
猫头猪
狐狸大王
狐狸大王
  • UID163
  • 注册日期2004-11-25
  • 最后登录2005-12-04
  • 发帖数595
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
13楼#
发布于:2005-07-20 11:39
gzpbx:很好,虽然很吵,但我还是从中学到不少东西!

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

用table排版很容易出现这样的问题。靠table排版,很难把本来应该在同一结构中的东西安排在一起。layout好像是容易做了,结构却无法组织。
在好的结构中,需要同时改变属性的东西可以放在一个block中,show/hide应该是很容易的事情。
另外,你这种情况可以用XPath。对同一类型的tr或者td设置class,然后通过XPath来得到分类组,也很方便。
不过,我还是主张你先丛设计上考虑非table排版。
gzpbx
狐狸大王
狐狸大王
  • UID1527
  • 注册日期2004-12-29
  • 最后登录2009-06-30
  • 发帖数410
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
14楼#
发布于:2005-07-20 11:39
夷,楼上几位都在用1.0.4呀~
如果你爱上了一朵生长在一颗星星上的花,那么夜间你看着天空就感到甜蜜愉快。所有的星星上都好象开着花。
上一页
游客

返回顶部