id与name的作用,作为标签的标识符,基本上是一样的。

name是老方法,id是在name基础上发明的,比name“现代化”一点,用的范围广一点

<...>中的name原来(刚发明时)就是用于本页按一下转向过去用的。

一般认为:ID就像是一个人的身份证号,显然是唯一的。

而name就像是他的名字,而name是可以重复的。

ID和name问题描述:

在页面里输入了一个input type="hidden",只写了一个id="Wxinfo",赋值后submit,

在后台用Request.Params["Wxinfo"]却怎么也找不到值。后来明白原因用name

来标示,于是在input里加了一个name="Wxinfo",就可以了。

第一段里对id和name的解说有点笼统,但它对id来说是完全对的,他就是Client端

html元素的Identity。而name其实要复杂的多,因为name有很多用途,所以它并不能完全由ID来代替。

name的具体用途有:

1、作为可与服务器交互数据的HTML元素的服务器短的标识,比如input,select,button等

我们可以在服务器端根据Name通过Request.Parems取得元素提交的值。

2、HTML元素Input type="radio"分组,我们知道radio button控件在同一个分组类

check操作是mutex的,同一时间只能选中一个radio,这个分组就是根据相同的name属性来实现的。

3、建立页面中的锚点,我们知道<a href="URl">link</a>获得一个页面超链接,如果不用href

属性而改用Name,如<a name="PageBottom"></a>,我们就获得了一个页面锚点。

4、作为对象的Identity,如Applet、Object、Embed等元素,比如在Applet对象实例中

我们将使用Name来引用对象。

5、在IMG元素与MAP元素之间关联的时候,如果要定义IMG的热点区域,需要使用其

属性usemap 使用usemap="#name"(被关联的MAP元素的Name)

6、某些特定元素的属性,如attribute、meta和param.例如为Object定义参数

<PARAM NAME="appletParameter" VALUE="value">或Meta中

<META NAME="Author" CONTENT="Dave Raggett">.

以上的用途都不能简单的使用ID来代替,所以HTML元素的ID和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 在HTML中的作用:

(1) 用id选择相应的style sheet(风格).

(2) <A ..> 链接的目的地

(3) 脚本语言用它找目的地(找该id的标签)

(4) 作为名字,用于声明某OBJECT element

(5) 作为一个标签或块的区分标致(用于从HTML网页中取出数据放入数据库或把HTML翻译成别的格式,等情况).

(参考HTML 4.0 定义)

name原来是为了标识之用,但是现在根据规范,都建议用id来标识元素。

以下只能用name:

1. 表单(form)的控件名,提交的数据都用控件的name而不是id来控制。

因为有许多name会同时对应多个控件,比如 checkbox和radio,而id必须是全文档中唯一的。

此外浏览器会根据name来设定发送到服务器的request。

因此如果用id,服务器是无 法得到数据的。

2. frame和window的名字,用于在其他frame或window指定target。

以下只能用id:

1. label与form控件的关联, <label for="MyInput">My Input</label> <input id="MyInput" type="text">

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

2. CSS的元素选择机制,以#MyId的方式指定应用样式的元素,不能用name替代。

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

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

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

如果要用name的话,通常先得到包含控件的form,例如 document.forms[0],然后从form再引用name,

注意这样得到的是经过计算后将发送给服务器的值。

name与id的其他区别是: id要符合标识的要求,比如大小写敏感,最好不要包含下划线(因为不兼容CSS)。而name基本上没有什么要求,甚至可以用数字 。

用CSS控制这个链接的停留样式,
可以这样写 #m_blog div .opt a:hover{color:#D57813} 或 #myLink:hover{color:#D57813}
NAME主要应用在交互式网页,表单提交给某个服务器端脚本后接收变处理量使用。从源代码的规范性和兼容性角度出发,如在客户端
脚本里要索引某个对象,建议用document.getElementById()方法,尽量不要直接使用NAME的值

文转自http://wenku.baidu.com/view/a3fcdc976bec0975f465e2c4.html。

html里id和name的异同的更多相关文章

  1. id和instancetype的异同

    相同点: 都可以作为方法返回值类型 在initWithName:方法中是一样的,例如: - (id)initWithName:(NSString *)name; - (instancetype)ini ...

  2. 记一下ajax里get与post的异同

    以下均为个人笔记,如有错误,欢迎指正 get与post在写法上来讲基本上差不多 $.ajax({ type:"get",//get data:data, success:funct ...

  3. 详述.NET里class和struct的异同

    结构与类共享几乎所有相同的语法,但结构比类受到的限制更多:尽管结构的静态字段可以初始化,结构实例字段声明还是不能使用初始值设定项. 结构不能声明默认构造函数(没有参数的构造函数)或析构函数. 结构的副 ...

  4. 随笔 JS 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里

    JS /* * 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里 * @id 要插入到DOM元素的ID * * 输入值为图片URL 字符串 * */ function addImages(i ...

  5. js 字符串分割成字符串数组 遍历数组插入指定DOM里 原生JS效果

    使用的TP3.2 JS字符串分割成字符串数组 var images='{$content.pictureurl} ' ;结构是这样 attachment/picture/uploadify/20141 ...

  6. 89、instancetype和id的区别

    1>instancetype在类型表示上,跟id一样,可以表示任何对象类型 2>instancetype只能用在返回值类型上,不能像id一样用在参数类型上 3>instancetyp ...

  7. css 格式中id与class共存

    PHP文件中有一段:<div class="post-alt blog" id="post-alt"> CSS文件中有一段:.post-alt {X ...

  8. .NET面试题目

    简单介绍下ADO.NET和ADO主要有什么改进? 答:ADO以Recordset存储,而ADO.NET则以DataSet表示,ADO.NET提供了数据集和数据适配器,有利于实现分布式处理,降低了对数据 ...

  9. asp.net面试题汇总

    1.静态成员和非静态成员的区别? 答: 静态变量使用 static 修饰符进行声明,在类被实例化时创建,通过类进行访问不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对 ...

随机推荐

  1. 利用libpcap分析网络上的数据包(入门级)

    本文可任意转载,但请保留作者及出处作者:rainfish出处:http://blog.csdn.net/bat603/经过几天的突击,终于明白了怎样在局域网内抓包,这可是我多年来的梦想.首先说说我的学 ...

  2. es站内站内搜索笔记(一)

    es站内站内搜索笔记(一) 第一节: 概述 使用elasticsearch进行网站搜索,es是当下最流行的分布式的搜索引擎及大数据分析的中间件,搜房网的主要功能:强大的搜索框,与百度地图相结合,实现地 ...

  3. mprotect() failed: Cannot allocate memory

    遇到这个问题是在測试项目的性能时发现的,每一个对象分配一页大小的空间然后mprotect() 保护起来,当系统分配3W多个页的时候会出现这个问题. google到在一份邮件列表中也曾提到该问题.htt ...

  4. 关于Java中的toString()方法

    package c07; class ewq{ public String toString() { return "ppppppppp"; } public static voi ...

  5. app开发学习需要经历哪些流程

    app开发学习需要经历哪些流程?如何零基础入门app开发?以下是知乎热心开发者的经验总结,对学习app开发有很好的参考意义   1.如果没有编程基础的,学习基础知识的过程肯定是必须的.2.有了一些基础 ...

  6. Ubuntu出现Authentication failure(认证失败)的解决方法(转)

    当我们想在刚安装的Linux系统启动某些服务或者想进入root用户时提示认证失败或者权限不够时,原因是刚安装Ubuntu后,root用户默认是未激活的,不允许登录,也不允许使用su命令到转到root用 ...

  7. studio显示Surface: getSlotFromBufferLocked: unknown buffer: 0xa2a58be0

    根据查询外网资料来看,出现这个错误的原因大致是换个模拟器或者物理机就可以了. 因为我使用的是安卓6.0,貌似都会出现这类的问题. 但是不影响程序运行.

  8. 于win2008R2虽然激活,但是一个小时之后就会自动强制关机的问题

    写一个批处理文件: taskkill /f /im wlms.exeping -n  4 127.0.0.1shutdown -a 用记事本写下以上的命令,另存为.bat 批处理文件.双击运行,即可. ...

  9. Tomcat日志备份脚本

    #!/bin/bash #Author:fansik #Description:backup tomcat logs #Date:-- directory=/usr/local/tomcat/logs ...

  10. php mysqli扩展库之预处理操作

    分享下php使用mysqli扩展库进行预处理操作的二个例子,有意研究mysqli用法的朋友,可以参考学习下,一定会有所帮助的. 例1.使用mysqli扩展库的预处理技术 mysqli stmt 向数据 ...