html中NAME和ID区别

NAME
的最大作用就是可以与服务端进行交互。Struts2中要设NAME的属性才能在Action中取到值,ID取不到。


id与name的作用,作为标签的标识符,基本上是一样的.name是老方法,id是在name基础上发明的,后来才有的,"现代化"一点,用的范围广一点.
中的name原来(刚发明时)就是用于本页揿一下转向过去用的.

除 BASE, HEAD, HTML, META, SCRIPT, STYLE, TITLE 标签外,id 都可用.

name只用于APPLET,SELECT,FORM,FRAME,IFRAME,IMG,A,INPUT,OBJECT,MAP,PARAM,META.
(name有时有自己的用途)

table 中 name 无定义, 应当用 id.

有些标签,可以同时有name和id.

在一个HTML网页中,id是唯一的,即只有某一个标签,或某一个块的标识符是这个id.

id 在HTML中的作用:

(1) 用id选择相应的style sheet(风格).
(2) 链接的目的地
(3) 脚本语言用它找目的地(找该id的标签)
(4) 作为名字,用于声明某OBJECT element
(5) 作为一个标签或块的区分标致(用于从HTML网页中取出数据放入数据库或把HTML翻译成别的格式,等情况).

这几天碰到一个不大不小的问题:在提交表单到服务器页面时,总是提交不过去,最后解决了,问题出在了我把HTML控件中ID属性与NAME属性给弄混了.仔细看了一下,HTML控件中有ID和NAME这两个属性,而WEB控件中则只有ID属性.从网上找了以下解释:

   可以说几乎每个做过Web开发的人都问过,到底元素的ID和Name有什么区别阿?为什么有了ID还要有Name呢?!
而同样我们也可以得到最classical的答案:ID就像是一个人的身份证号码,而Name就像是他的名字,ID显然是唯一的,而Name是可以重复的。

ID就是Client端HTML元素的Identity。而Name其实要复杂的多,因为Name有很多种的用途,所以它并不能完全由ID来代替,从而将其取消掉。具体用途有:

用途1:
作为可服务器交互数据的HTML元素的服务器端的标示,比如input、select、textarea、和button等。我们可以在服务器端根据其Name通过Request.Params取得元素提交的值。

用途2: HTML元素Input type='radio'分组,我们知道radio
button控件在同一个分组类,check操作是mutex的,同一时间只能选中一个radio,这个分组就是根据相同的Name属性来实现的。

用途3: 建立页面中的锚点,我们知道link是获得一个页面超级链接,如果不用href属性,而改用Name,如:,我们就获得了一个页面锚点。
用途4:
作为对象的Identity,如Applet、Object、Embed等元素。比如在Applet对象实例中,我们将使用其Name来引用该对象。

用途5:
在IMG元素和MAP元素之间关联的时候,如果要定义IMG的热点区域,需要使用其属性usemap,使usemap="#name"(被关联的MAP元素的Name)。

用途6: 某些特定元素的属性,如attribute,和param。例如为Object定义参数。

显然这些用途都不是能简单的使用ID来代替掉的,所以HTML元素的ID和Name的却别并不是身份证号码和姓名这样的区别,它们更本就是不同作用的东西。

当然HTML元素的Name属性在页面中也可以起那么一点ID的作用,因为在DHTML对象树中,我们可以使用document.getElementsByName来获取一个包含页面中所有指定Name元素的对象数组。

在这里顺便说一下,要是页面中有n(n>1)个HTML元素的ID都相同了怎么办?在DHTML对象中怎么引用他们呢?如果我们使用ASPX页面,这样的情况是不容易发生的,因为aspnet进程在处理aspx页面时根本就不允许有ID非唯一,这是页面会被抛出异常而不能被正常的render。要是不是动态页面,我们硬要让ID重复那IE怎么搞呢?这个时候我们还是可以继续使用document.getElementByIdx_x获取对象,只不过我们只能获取ID重复的那些对象中在HTML
Render时第一个出现的对象。而这时重复的ID会在引用时自动变成一个数组,ID重复的元素按Render的顺序依次存在于数组中。


版权声明:本文为博主原创文章,未经博主允许不得转载。

最新文章

  1. mysql 函数(二)
  2. 几个有用的JSON工具
  3. linux svn搭建
  4. django xadmin 插件(2) 列表视图新增一功能列
  5. aspx页面图片用作html中img的url
  6. windows下做react native官方例子遇到的问题
  7. 【结构型】Facade模式
  8. NGUI研究之制作转圈的技能CD特效
  9. Request.ServerVariables完整参考
  10. Rabbitmq无法监听后续消息
  11. Python中lambda用法
  12. Zabbix 3.2.6安装过程
  13. Ansible-----循环
  14. 允许长单词、数字、URL换行到下一行
  15. Java的CountDownLatch和CyclicBarrier的理解和区别
  16. Java大法之面向对象
  17. 像黑客一样!Chrome 完全键盘操作指南(原生快捷键 + Vimium 插件)
  18. linux换行PHP_EOL
  19. js封装日历控件
  20. linux 拓展之linux纯命令行界面变为图形界面

热门文章

  1. Python 单元测试 之setUP() 和 tearDown()
  2. Sqlite 设置外键级联更新
  3. 【BZOJ2789】[Poi2012]Letters 树状数组
  4. 使用active mq
  5. cmake是什么
  6. RocksDB
  7. cocos2d-js添加道有道插屏(通过jsb反射机制)
  8. cocos2d-js添加艾盟插屏(通过jsb反射机制)
  9. mysql系列之4.mysql字符集
  10. 使用maven3 创建自定义的archetype