HTML编程基础 : 关于 HTML标签中的 id 与 name. (抛砖贴)

梅雪香 2005-11-03 12:56:21
说到 id 和 name 属性,做网页的一点都不陌生。心想,这有什么好说的啊?
没错,id 和 name 属性确实普通到家了,但就是有些人不会用,要不就是用不好。我这样说并不是说我用的好,标题中已经说明,该贴为抛砖贴,只不过把本人对于id 与 name 的所知所感拿出来与大家交流一下而已。
1。什么是 name.
name:意思就是名字,你有我有他有,啥还能没有个名字呢。比如:奥迪A8就是一款车的名字,一提起来,大家都有印象----那个车好啊,不过买不起!所以名字是一系列有共性东西的统称(getElementsByName),那么有没有唯一的名字呢?当然有的,不难想吧,不说了(length=0;)。
2。什么是 id.
id:identity,是对象本身的唯一标识,不可重复。你有没有身份证啊,有吧,你找个和你一样的来看看,除非工作人员搞错了,否则是没有重复的(getElementById)。什么,你没有?黑人口,会被收容的,不和你说话 !(getElementById==null;)
3。相同与不同
相同之处就是它们都是对象的一个代号。不同的是代表的集合不同,name代表多个,id代表一个。当只有一个对象时,用name 和 id效果是一样的。一个对象可以同时有id 和 name属性,就像白天为我们照亮的我们叫作:太阳,那么,这就是它的id,如果换成叫恒星,那就是name[i]了。
4。易出现错误。
虽然 id 和 name是如此简单,但用不好一样会出错的。一般会有两种情况:重复定义了id/想引用一个对象的时候却用了name属性(有同name对象存在).
第一种情况就像发了相同号码的身份证,电视台上说该号码中了五百万,两个人都去了该如何是好?在页面里重复定义ID是不允许的,虽然HTML并没有强制ID检查。浏览器将只能找到最后一个被定义为该ID的对象,可能出现错误。
如果你想引用一个对象,却用了name也有可能出现错误,如果该name被用于命名一个数组的话。
5。关于id 和 name 的巧妙使用。
一般来说,是没有必要为对象同时写上id 和 name属性的。
了解了它们的脾气,就更方便我们使用。是时候为我们造福啦。
用例子来说明:比如一行的N个td中有N张图片,我们当然可以在td中写<img src="xxx.jpg"..>之类的代码,但也可以考虑用id的变化来处理,把td命名为:td0,td1,td2,td3。。。。tdN,把图片命名为picname0.jpg,picname1.jpg.....然后在body 的onload中,用一个循环也可以来实现这个功能
for(var i=0;i<N;i++)
eval("td"+i).innerHTML="<img src='picname'"+i+".jpg'>";
如果是需要对其进行循环处理的东西(像表格中处理删除等功能用的checkbox等),我们可以命名为相同的name。
这里仅是举个例子,大家在使用的时候有什么心得大可以拿出来与大家分享。
再次申明,本贴为抛砖贴,希望大侠们能写出高水准的东西来。
...全文
231 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
treeroot 2005-11-03
  • 打赏
  • 举报
回复
good job,thank you!
hbhbhbhbhb1021 2005-11-03
  • 打赏
  • 举报
回复
<div id="div1"></div>
如果中间什么都没有,有时候用document.getElementById("div")取不到
必须在中间添些东西
比如
<div id="div1"> </div>
前段时间有个帖子讲ID和NAME的,结果得出的结论是:IE的ID和NAME好乱。
ice_berg16 2005-11-03
  • 打赏
  • 举报
回复
看手册上
id可以应用到大部分HTML标签,
而name应用的范围就小了
A, APPLET, BUTTON, FORM, IMG, INPUT type=button, INPUT type=checkbox, INPUT type=file, INPUT type=hidden, INPUT type=image, INPUT type=password, INPUT type=radio, INPUT type=reset, INPUT type=submit, INPUT type=text, LINK, MAP, OBJECT, PARAM, RT, RUBY, SELECT, TEXTAREA

尽量不要在非上述标签上使用name属性。
举例如下:
<div name="a">1234</div>
<div name="a">1234</div>
<div name="a">1234</div>
<div name="a">1234</div>
<script language="javascript">
<!--
var ds = document.getElementsByName("a");
for(i=0;i<ds.length;i++)
alert(ds[i].innerHTML);
//-->
</script>

该段代码在firefox里运行正常,在IE里就没有反应,原因是在IE中用getElementsByName("a")取不到上面的DIV,可能是IE不承认name属性可应用到DIV上,这点不知道firefox为什么会这样认为。
而下面的更奇怪
<div id="a">1234</div>
<div id="a">1234</div>
<div id="a">1234</div>
<div id="a">1234</div>
<script language="javascript">
<!--
var ds = document.getElementsByName("a");
for(i=0;i<ds.length;i++)
alert(ds[i].innerHTML);
//-->
</script>
该段代码在ie中可以出现结果,显示IE认为id才是div应有的属性,但这种结果显示不符合逻辑,该段代码在firefox中没有结果,
如何解决:
1。给div同时加上id和name
2. 换一种思路,只将name用于规定的标签上。

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧