zoukankan      html  css  js  c++  java
  • html里id和name的异同

    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。

  • 相关阅读:
    输入和输出插头
    MCB2300的CTM1050(CAN)
    POJ读书笔记2.1 —— 鸡兔笼带
    Java程序猿的书面采访String3
    JavaScript:undefined And null差异
    设计模式——结构模型
    Qt移动应用开发(六):QML与C++互动
    让我们来谈谈合并排序算法
    安装Eclipse完PyDev插件中没有出现
    汉顺平html5课程分享:6小时制作经典的坦克大战!
  • 原文地址:https://www.cnblogs.com/peifei045/p/5706931.html
Copyright © 2011-2022 走看看