【JavaScript】document.all与getElementById、getElementsByName【转】

HTML DOM 定义了多种查找元素的方法,除了 getElementById() 之外,还有 getElementsByName() 和 getElementsByTagName()。不过,如果您需要查找文档中的一个特定的元素,最有效的方法是 getElementById()。
不过要注意的是使用getElementById时对不同的浏览器执行的结果可能是不同的,以下有相关说明
text1:
<input name=”textName1″ type=”text” id=”textName2″ />
<br>
text2:
<input name=”textName2″ type=”text” id=”textName1″ />
<br>
<input type=”button” name=”Submit” value=”text1″ onclick=alert(document.getElementById(‘textName2′).value) />
<input type=”button” name=”Submit2″ value=”text2″ onclick=alert(document.getElementById(‘textName1′).value) />
我在IE中测试了上面的代码,在第一个文本框中输入1,在第二个文本框中输入2,然后点下面的两个按钮,猜一下结果是什么?
我本意是按钮1返回第一个文本框的值,按钮2返回个文本框的值。
结果是两个按钮都返回了第一个文本框的值。
说明ie执行document.getElementById(elementName)的时候,返回的是第一个name或者id等于elementName的对象,并不是按照ID来查找的。
在fireFox中不存在这样的问题,fireFox执行document.getElementById(elementName)的时候只查找id等于elementName的对象,如果不存在则返回null。
可能IE是考虑的兼容性的问题才这么做的。

<html>
<head>
<title>
document.all test
</title>
<script language=”javascript”>
function view()
{
var obj = document.getElementById(“ccc”);
alert(obj.value);
obj = document.getElementById(“aaa”);
alert(obj.value);
}
</script>
</head>
<body>
<form name=”form1″ id=”f1″>
<!–<input type=”text” name=”aaa” >–>
<input type=”text” name=”aaa” id=”ccc” >
<input type=”text” name=”ccc” id=”aaa”>
<input type=”button” name=”bbb” value=”click” onclick=”view();”>
</form>
</body>
</html>

这个时候我在两个text中输入的值分别为:eee, www
IE中测试结果为:eee , eee
再看当我把<input type=”text” name=”aaa” id=”ccc” >中的id去除时,也即上面代码使用注释中的内容时
我同样输入eee, www
IE中测试结果为:www ,eee
仔细分析上面两个测试的结果:得出结论是:每执行getElementById一次,会将web页面中的所有表单按顺序遍历一次,同时查找id,name 两个值,如果存在所要找的id则不再继续查找,如果没有相应的id与之对应则看name值是否与之对应,如果有相应的name与之对应,则不再继续查找。 也就是说:
ie执行document.getElementById(elementName)的时候,返回的是第一个name或者id等于elementName的对象,并不是仅按照ID来查找的。
而同样的两个测试在firefox下第一个结果为eee,www,而第二个结果因为没有找到id=”ccc”所以返回null
对于这个结果还可参见
http://www.jb51.net/article/16852.htm

 

 

1、document.getElementsByName(name)

 

IE6.0中的bug:

会将id等于给定的name值的元素也返回。

 

<script type=”text/javascript”>

function getCount(){

var objs=document.getElementsByName(“myElement”);

alert(objs.length);

}

</script>

<button id=”button1″ name=”button1″ onclick=”getCount()”>click me</button>

 

<a id=”myElement” name=”aLink” href=”http://www.baidu.com”>baidu</a>

<input id=”btn1″ name=”myElement” value=”button 1″ type=”button” />

<input id=”btn2″ name=”myElement” value=”button 2″ type=”button” />

<input id=”btn3″ name=”myElement” value=”button 3″ type=”button” />

 

结果:4

原因:IE6.0错误的将<a id=”myElement”>元素也返回了。

解决办法:一个元素的name属性值千万不要和其他任何元素的id值相同。此处建议讲<a>的id值改为其他值。

 

 

 

2 document.getElementById(id)

 

IE6.0中的bug:

如果给定的id匹配某个元素的name属性,IE6.0会错误返回这个元素(前提是该元素位于我们查找的目标元素之前)。

 

示例:

<script type=”text/javascript”>

function getEle(){

var obj=document.getElementById(“myElement”);

alert(obj.id);

}

</script>

 

<button id=”button1″ name=”myElement” onclick=”getEle()”>click me</button>

<a id=”myElement” name=”aLink” href=”http://www.baidu.com”>baidu</a>

 

结果:button1

原因:button1的name值恰好等于给定的id值,且button1在a元素之前,IE6.0错误的返回了button1。

解决办法:一个元素的name属性值千万不要和其他任何元素的id值相同。

 

改变一下button和a的位置,如下:

<script type=”text/javascript”>

function getEle(){

var obj=document.getElementById(“myElement”);

alert(obj.id);

}

</script>

 

<a id=”myElement” name=”aLink” href=”http://www.baidu.com”>baidu</a>

<button id=”button1″ name=”myElement” onclick=”getEle()”>click me</button>

 

结果:myElement

原因:IE6.0首先找到id为myElement的a元素,找到后立即就返回了。

1、document.getElementsByName(name)

 

IE6.0中的bug:

会将id等于给定的name值的元素也返回。

 

<script type=”text/javascript”>

function getCount(){

var objs=document.getElementsByName(“myElement”);

alert(objs.length);

}

</script>

<button id=”button1″ name=”button1″ onclick=”getCount()”>click me</button>

 

<a id=”myElement” name=”aLink” href=”http://www.baidu.com”>baidu</a>

<input id=”btn1″ name=”myElement” value=”button 1″ type=”button” />

<input id=”btn2″ name=”myElement” value=”button 2″ type=”button” />

<input id=”btn3″ name=”myElement” value=”button 3″ type=”button” />

 

结果:4

原因:IE6.0错误的将<a id=”myElement”>元素也返回了。

解决办法:一个元素的name属性值千万不要和其他任何元素的id值相同。此处建议讲<a>的id值改为其他值。

 

 

 

2 document.getElementById(id)

 

IE6.0中的bug:

如果给定的id匹配某个元素的name属性,IE6.0会错误返回这个元素(前提是该元素位于我们查找的目标元素之前)。

 

示例:

<script type=”text/javascript”>

function getEle(){

var obj=document.getElementById(“myElement”);

alert(obj.id);

}

</script>

 

<button id=”button1″ name=”myElement” onclick=”getEle()”>click me</button>

<a id=”myElement” name=”aLink” href=”http://www.baidu.com”>baidu</a>

 

结果:button1

原因:button1的name值恰好等于给定的id值,且button1在a元素之前,IE6.0错误的返回了button1。

解决办法:一个元素的name属性值千万不要和其他任何元素的id值相同。

 

改变一下button和a的位置,如下:

<script type=”text/javascript”>

function getEle(){

var obj=document.getElementById(“myElement”);

alert(obj.id);

}

</script>

 

<a id=”myElement” name=”aLink” href=”http://www.baidu.com”>baidu</a>

<button id=”button1″ name=”myElement” onclick=”getEle()”>click me</button>

 

结果:myElement

原因:IE6.0首先找到id为myElement的a元素,找到后立即就返回了。

一年之后的更新

咳咳,好久没更新博客了!!我有罪啊!!而且一直在用微博,博客更没怎么去打理了。。发现我真的不是擅长舞文弄字,不太爱用文字来抒发感情,以后我尽量多更新博客吧,不过,最主要还是更新UI。。。毕竟要学以致用嘛!!!

今天更新了系统,从z-blog换成了wordpress系统,可惜就是慢了点,其他都还不错~

生活上,搬新家了,家里打扫的很干净,悲催的是,少了张床,姐暂时睡地上啊!!有木有!!没床只能睡地板的人你伤不起啊!!不愿跟别人挤一张床的人你也伤不起啊!!还有,很想念上班的赶脚。。还是忙点好啊!!

暂时这样吧,新系统,还有很多要改的。。明天还要上课。。悲了个催!!

公司5周年纪念日

今天是公司5周年纪念日,颁了这么多奖,我们组有3个得奖的。。可惜的是没有得到最佳团体奖。。

由于Alex的英明决断,我们没有从1点半就坐那听那些冗长的演讲词。。而是4点才慢悠悠的过去,恰好赶到颁奖仪式。。

Alex是跟公司一块长大的5周年奖。。发了一个itouch和一个水晶奖牌。。老候领奖的时候笑的很开心,继他买了一个ipad之后,再添一个Apple产品。。还有人乘机怂恿他去买个iphone。。凑齐Apple公司的产品。。

Gavin获得的是优秀毕业生奖。。毕业没2年就变成了公司的顶梁柱啊。。很有实力的一个青年(想了很多个词都不好形容,就用了青年来形容他。。嘿嘿),是我们江西的哦~~前途很光明!对我们这些小辈的学弟学妹也很好,很有耐心~~

Anne小慧姐,获得优秀员工奖,研究生后直接工作,没有实习。。她还幸运的跟Alex到美国那边与美国的老大会晤兼学习。。

颁奖仪式结束之后,大家散场。。由于我们组的前段时间加班比较累,领导特别嘱咐让我们一块参加接下来的自助晚餐。。在易豪酒店。。我们屁颠屁颠的跑过去,见到了原本站在台上的老大们。。还有新加坡来的美女领导。。

今天,我第一次勇敢的尝试了生鱼片。。没有想象中难吃,冰冰凉凉的,肉质很嫩。。可惜就是切的有点厚。。海鲜类的,还吃了扇贝、北极心。。以前也不喜欢吃。。今天就算破例吧,不想自己陷入自己设定的条条框框里。。

我决定,经常记录下自己的心情,不管暴露不暴露,就这样了。。不怕!!如果再压抑下去,我怕我会疯掉的!
晚了,我要回宿舍了。。Joyce,晚安

 

我国公民加入民主党派所需的条件

我国现有八个民主党派,分别是中国国民党革命委员会,简称民革;中国民主同盟,简称民盟;中国民主建国会,简称民建;中国民主促进会,简称民进;中国农工民主党,简称农工党;中国致公党;简称致公党;九三学社;台湾民主自治同盟,简称台盟. 

参加民主党派必须具备两个条件,一是大专以上学历,二是中级职称.除非您有特殊的背景.

民 主党派的成员发展各有侧重
民革主要是与台有关系和与原国民党有关的人员,现在也发展一些其他方面的人
民盟主要是大学的教授和讲师,民建主要是经济界的 人士和从事经济研究的人员
民进主要是中教老师和出版界人士
农工党主要是医务工作者
致公党主要是归侨,侨属以及与侨有关人员
九三学社主要是科技工作者
台盟主要是台湾籍的人士
加入民主党派与加入中共一样,需要个人提出申请,并有两位党派成员介绍 

各民主党派都要求的条件:在地市级以上的城市工作、生活(县级一般不发展,也没有民主党派机关);有中级以上职称或初始学历是研究生以上;非中共党员;在单位表现良好。

秋天来了,这是一个感伤的季节

秋天来了,天气转凉。。接踵而至的,是来自各全国各地的分手消息、吵架传言(非幸灾乐祸,大家别误会)。。

某陈分手了,女朋友短信说,忘了我吧。。电话求我安慰。。
一个月前,他还信誓旦旦的说,要同她结婚,我大惊,问他女友从何而来。。
他说同学聚会好上的。。虽然惊讶,但我还是送上祝福
哪知,一个月后的今天他又致电,告诉我分手了。。

我:伤心不?
他:不伤心。。
我:伤心不?
他:一点点。。
我:你确定只有一点点?
他:其实不是啦。。是很多!!我都快伤心死了!我都打算跟她结婚了,她却冒出一句分手。。

秋天真的是一个分手的季节,大家纷纷失恋的失恋,分手的分手。。这让我们这些连对象都没找到的单身青年情何以堪呐(再次运用到情何以堪这个词,鼓掌)…

71÷8,某除法马甲,写着他跟XX女的曾经。。在八他马甲的同时,我能感受到他的那份失落与无奈。。但还是那句话,看开点,生活不仅仅只有爱情。。还有很多事值得去享受。。
我想把这首歌送给你。。特别。。其中有句歌词,我深爱过你最特别,所以不后悔。。好好体会~~
ps:再自豪的说一句。。我八到你了。。已经通过某同学的证实了。。别怕,我不爆你。。

小怪,最近也很失落。。希望你早点好起来,别忘了,还有我们一直支持着你陪伴着你。。本来想邀请你来南昌散心的,只是我无法全程陪伴,等下次有机会,一定陪你好好玩。。请谅解。。早点好起来,我们的八卦事业还需要你来助阵。。

洛丽塔,前段时间的困扰是否已不成困扰了。。好好珍惜在学校的日子~把最美好的回忆留在心底。。其他的,都可以过滤!

菜 菜,不知你最近可好~看你字里行间都是感叹时光流逝、年华老去。。其实保持年轻的心态,可以让生活过的更美好~我知道,你一直不缺欢笑,但你写的文字,总 是带着那么点点伤感,让人看了心疼。。。你是很少写矫情文能让我不觉得冷的,我很喜欢~~有一句话,很想说,不要再让自己受伤了。。

皙姐,你总说自己没心没肺,我却觉得你至情至性,来北京没少受到你的关怀,我都记在心里,满怀感激。。你看事情总是能比别人透彻,你说的很多话,我很受教,也都记在心里。。也许有一天,我也能到你这样。。

小 慢,我们俩总是处于尴尬的处境,为什么,我想你应该知道的。。你的处事,有的时候我不太认同,但我不能否认的是,你做事认真还很有能力(这是大一的时候 XX对你的评价)。。2年来,我也想通了很多,人人有本难念的经,你的经很难念,但我觉得,千万不要为了男人让自己变得卑微。。宁愿你负他,都不要让他负 你。。我很自私的希望我认识的每个人都过的好。。其他人我就管不着了。。皆大欢喜是我最乐见的~

大兵,你跟H小姐,幸福就可以,不要晒给我们这些单身青年看。。我会嫉妒的!电车也是。。(故意一笔带过电车,啊哈哈!)

小JJ,即使喜欢的女生结婚了,但是还有这么多未婚女同胞在等着你。。别灰心,天天发帖求聊天也是不行的。。建议还是在现实生活中找。。
ps:某次难得登陆人人,发现你上人气榜了。。当时截图之后,却忘了恭喜你了。。要截图,行,拿我的照片换。。

六道,知道你最近情绪很低,上次那件事让你为难了。。希望你好好的,把不开心的都忘掉吧~你这孩子,没有以前开朗了。。

墨线小朋友,珍惜身边的朋友,但你更要找到如何跟朋友相处的方式,或许你不知道,你曾经的某一句不经意的话,其实已经伤害到了你的朋友。。所以,朋友之间,有的时候很脆弱,要好好保护~~最不能伤害的,就是最亲密的朋友了。。懂不?

小luo,你很久没来了~想念你的不只我一个~

XX,别老是把你跟女友双手紧握的照片放在头像上。。我看着很碍眼!!

我累了。。

对于红门,这几天我心力交瘁,我真的累了。。

2年来,从陌生到熟悉,再变为现在的不舍。。

我从未想过,有一天,我也将不得不舍弃她。。

2年来,看过很多人的来来去去。。很清楚离别的感受。。

每一个人的离开,都会在我心中造成悸动。。偶尔也会幻想着有一天自己离开的时候,会是什么境地。。但心里都会有个声音坚定的告诉自己:我不会离开的。。

我从不将红门添加到书签,坚持天天输入网址来打开红门,是因为我怕将来的某一天,我会将这个网址遗忘。。那还不如,现在就烂熟于心。。

当初的想法,现在看来,却是多么的可笑。。让自己陷入想忘都忘不了的处境。。

我常常怀念以前的人、以前的事。。那是因为,我渐渐觉得,再也没有了以前的那种感觉。。

我是一个念旧的人,我崇拜的人,我欣赏的人,我赞赏的人门,渐渐都离开了红门。。没走的,也说要走。。

离别,是一个感伤的词。。

而且现在的我,在红门待着,已经觉得不自在了。。

 

我跟XX打趣说,看来,我们应该另外找一个地方混了。。

可是,花在红门的时间和花在红门的精力都已经成为一种习惯。。对红门的归属感更是无法抹杀。。

去别的地方,再也找不到那种感觉了。。就跟找爱人一样,没有感觉,是万万不会在那停留的。。

 

XX说,当是年少梦一场,要长记性。。

XX说,我们不该把红门看的太重,当受到伤害的时候,我们注定再也爬不起来。。

XX说,你不该提太多意见,因为这已经不是我们的时代了。。

XX说,荣誉了就不要回去了。。不合适了。。

XX说,你如果回去了, 就不要提意见,不要亿旧人,跟着新人的话说。。

 

我承认,最后那句话刺激到我了。。我说什么做什么,还要看新人脸色?!

我自认为从没伤害过什么人,也没说过什么重话,因为我曾经被伤害过,所以对待新人,就像对待自家弟妹一样。。

就算有个别人是我看不顺眼的,我都不会去说他些什么。。难怪原点不给我颁勇气勋章,我也自认为没有跟别人吵架的勇气。。

可能也是因为这个刺激吧,我终于勇敢了一回,我对一个我忍了很久的新人,表达了我所有的情绪。。

我平生最看不惯那些天天沉浸在风花雪月、只管爱情不管其他的人

我平生最受不了别人一口一个爱一口一个想念的人。。

我平生最瞧不起死缠烂打的人。。

没想到,她3样都占了个全。。。

你说你,一个92年屁大点的小女孩,你懂什么是真正的爱情吗?失恋又怎样?爱情又不是生活的全部!缺了爱情,你照样能活出你自己!

没有经历时间的沉淀,却只会天天说想念、说爱情的人,太可笑了。。太可悲了。。

我发誓!直接的、间接的我都有劝过她,或许是她没能明白我的意思吧。。仍然天天以自我为中心,在自己的楼里,盖着与那个不属于自己的人的一切。。

当她说离开的时候,我最后一次劝她。。那些言辞,真真切切的表达了我对她的劝告和希冀。。

艹,刚刚找原文的时候,居然发现原先的ID都删了。。还好她换了个马甲说离开的。。

以下是我劝说的原文:

“傻孩子,你还没体会到网络的强大吧。。不过,你既然敢做就应该敢当!
我只能这么劝你,就算人肉到又怎么样?谁又会无聊到去跟他说这些呢。。
每个人,对于别人来说,都只是一个过客。。你对于我们来说,也是如此。。
每当我发生了糗事,心里很介怀的时候,我就会这么安慰自己。。事实上也确实如此啊。。
或许是你给的爱太过沉重,他无福消受呢~你的未来还很长,一个男人不足以淹没你的所有生活。。
不要太过介怀这件事~如果想来,还可以再来~这里会欢迎你的!”

现在想想,说了这么多,浪费了这么多口水,都是无用功。。她还我行我素。。我心里能没意见吗。。

以下是我跟她掐架帖子的原文:

话说某天下大雨   小红同学逮到一大肥黑鸽,        
——LZ你真厉害!空手套黑鸽 
话说小红口水直流  想立刻吃它                    
——LZ原始森林出来的?或者是还没进化完?居然看到活物就能流口水。。在下实在佩服的紧!
话说小红不敢动刀子,                          
——这句话貌似很假。。看下面就知道了!
话说,小红同学最后把大肥黑鸽的嘴巴掐了,浸到水里把它闷死了。  
——因为LZ用了更加残忍的办法,空手掐死一只肥鸽,这力气,这手段,可不是一般女人能做到的!
挖挖挖哈哈   以后大家不敢杀鸽子  就把它扔水里呛死呛死好了。    
——不敢杀鸽子?难道呛死它就不是杀了吗?!
谢谢支持,  哦也。                          
——不敢支持!谢谢!哦也!"

ps:红色字体为寂寞的托原文。。

 

那天晚上,我辗转反复,夜不能寐,一直在想自己说过的话,一直在想这件事的后果。。
这件事,无论对错,都造成了她的阴影。。我想,我这辈子都会被她铭记的。。笑。。
没事,我曾经也被如此对待过,只要自己长记性,不再犯同样的错,你会慢慢长大的。。

 
我说,我想找个离开的理由。。现在,我已经找到了。。

 

 

仅以此文记录我此时此刻的心情,将来再看的时候,也能够回味一二。。也怕自己好了伤疤忘了痛。。

左边
2010/08/31

实用的 JavaScript 测试及效验工具

JavaScript 是一款强大的广泛运用于现代Web站点及应用的脚本语言。作为一个技艺精湛的 Web 开发者,掌握JavaScript可以增强用户的使用体验,提供交互及富客户端等功能。

尽管JavaScript 的语法非常简单,但对于写程序而言仍然是困难重重,就是因为它的运行环境:基于Web浏览器。

以下您可以看到收集的8个实用的 JavaScript 测试及效验工具,它们都可以在不同环境下进行单元测试及校验测试您的脚本。

JSLint
JSLint是基于Web的验证JavaScript错误代码的工具。它拥有的功能及特定的设置来使用您的需求,自定义你的验证算法。

JsUnit
JsUnit是一款在客户端(在浏览时)的单元测试JavaScript框架。对JavaScript而言,JUnit就像是它的一个端口。当然它也可以在多 个浏览器、多个机器的不同操作系统中自动运行。它的发展始于2001年1月。

J3Unit
J3Unit是一个面向对象的JavaScript单元测试框架。J3Unit在网页浏览器中直接运行JavaScript的测试,也可以自动运行 JUnit 和 Jetty。J3Unit是建立在JUint和Script.aculo.us的基础之上来更好地实现自动运行JavaScript 单元测试。面向对象的JavaScript单元测试是由Script.aculo.us的Test.Unit.Runner对象编写的,基于 prototype JavaScript库。

Crosscheck
Crosscheck是一款开源的校验浏览器中的JavaScript测试框架。它可以帮助您在不同的浏览器中,诸如:Internet Explorer、Firefox等,而不需要一 一安装他们来确认您的代码是否正确。您唯一需要的是必须要有Java虚拟机环境。

YUI Test
YUI测试是一款基于浏览器,提供解决方案的测试框架。使用YUI,您可以方便地添加单元测试,寻求JavaScript解决方案。它是由 Yahoo! UI Library开发的一个JavaScriptMVC测试插件,能够让你模范大部分DOM动作,比如写,拖拽,比如模范AJAX响应,并且能够使用断言 (assertions)。它能够象函数一样运行,并且能够在不同的console窗口进行集成测试。虽然它不是在任何 xUnit 框架基础上开发而来,但YUI Test仍然有很多nUnit 和 JUnit的所具有的特性。( While not a direct port from any specific xUnit framework, YUI Test does derive some characteristics from nUnit and JUnit. 这段翻译得不好,但相信大致意思是对的)。

Regular Expression Tool
Regular Expression Tool(正则表达式工具)是一款在线工具,用来测试您的正则表达式代码是否正确。当您想快速测试各种文本例子的正则表达式时非常得心应手。

JSLitmus
JSLitmus是款轻量级的工具,用来测试JavaScript执行性能情况,采用直观的API。

JavaScript Regular Expression Tester
这块便利的应用程序是在浏览器中使用JavaScript来测试JavaScript正则表达式的。操作界面跟其他正则表达式测试工具无异,不同的 是,它测试的是JavaScript正则表达式在JavaScript中的性能情况。