现在的位置: 首页 > web前端 > 正文

HTML中id和name的用途和区别

2020年01月07日 web前端 ⁄ 共 1730字 ⁄ 字号 评论关闭

  name是用来提交数据的,提供给表单用,可以重复;id则针对文档操作时候用,不能重复,如:document.getElementById().

  一个name可以同时对应多个控件,比如checkbox和radio,而id必须是全文档中唯一的.

  id的用途

  1、id就是Client端HTML元素的Identity(标记),主要是在客户端脚本里用。

  2、label与form控件的关联,如

  My Input

  for属性指定与label关联的元素的id,不可用name替代

  3、脚本中获得对象:

  IE支持在脚本中直接以id(而不是name)引用该id标识的对象。

  例如上面的input,要在脚本中获得输入的内容,可以直接以 MyInput.value来获得。

  如果用DOM的话,则用document.getElementById("MyInput").value,

  如果要用name的话,通常先得到包含控件的form,例如document.forms[0],然后从form再引用name,注意这样得到的是经过计算后将发送给服务器的值

  name的用途

  用途1: 主要是用于获取提交表单的某表单域信息, 作为可与服务器交互数据的HTML元素的服务器端的标示,比如input、select、textarea、框架元素(iframe、frame、 window的名字,用于在其他frame或window指定target)和button等,这些元素都与表单(框架元素作用于form的target)提交有关,浏览器会根据name来设定发送到服务器的request,在表单的接收页面只接收有name的元素, 所以赋ID的元素通过表单是接收不到值的。 我们可以在服务器端根据其Name通过Request.Params取得元素提交的值。在form里面,如果不指定Name,就不会发送到服务器端 。

  用途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,meta和param。例如为Object定义参数或Meta中。

  name与id的其他区别

  id要符合标识的要求,比如大小写敏感,最好不要包含下划线(因为不兼容CSS)。

  而name基本上没有什么要求,甚至可以用数字。table、tr、td、div、p、span、h1、li等元素一般用id。

  在进行网页编辑时建议使用ID来标识一个节点,而不是使用Name(除非是为了Post提交的需要),同样使用Javascript进行Dom节点定位时建议使用getElementById方法,因为只有ID能唯一标识一个节点,而同一个网页里可能会有多个Name属性相同的节点,它们分别处在不同的Form里。

  与表单相关的元素也可以赋ID值, 但为这些元素赋ID值的时候引用这些元素的方法就要变一下了,具体的如下:

  赋name时引用元素的方式: document.formName.inputName或document.frames("frameName")

  赋id时引用元素的方式: document.all.inputID或document.all.frameID

  除去与表单相关的元素,只能赋id不能赋name,这些元素有body、li、a、table、tr、td、th、p、div、span、pre、dl、dt、dd、font、b等等。

抱歉!评论已关闭.