当前位置:  编程技术>WEB前端

浅谈html中id和name的区别实例代码

    来源: 互联网  发布时间:2014-10-04

    本文导语:  我们可以通过一段代码来分析一下其中的微妙差别: 在IE浏览器里,我们可以通过多少方法来索引到这个文本框对象?(为区别起见,我们把NAME和ID设成了不同的值) 1. oDemo 2. demoform.oDemo 3. document.all.oDemo 4. document.all.demoform.oD...

我们可以通过一段代码来分析一下其中的微妙差别:







在IE浏览器里,我们可以通过多少方法来索引到这个文本框对象?(为区别起见,我们把NAME和ID设成了不同的值)
1. oDemo
2. demoform.oDemo
3. document.all.oDemo
4. document.all.demoform.oDemo
5. document.forms[0].oDemo
6. document.forms['demoform'].oDemo
7. document.forms['demoform'].childNodes[0]
8. document.forms['demoform'].elements[0]
9. document.getElementById('oDemo2')

以上9种索引方法在IE6里面全部通过返回值测试,不过值得注意的是最后一种:在IE6里,我把索引对象写成

document.getElementById('oDemo'),浏览器也能正确索引到对象,真是可怕的容错性啊!!

接着问题来了,我们把这段代码放在Mozilla Firefox 1.0里再执行一次,只有第7种方法返回“undefined”,其他的方法可以正确

索引到对象,不过由于第3、4种方法用到了document.all这个IE专有对象,FF1.0虽然返回了正确的值,不过却在控制台里发出了警

告:警告:非标准的属性 document.all。请使用 W3C 的标准形式 document.getElementById() 。

接下来我们把HTML文本类型定义得严格一点,在源代码开头加上:



使HTML文本按照HTML4.01标准去解析,在IE6里照样全部通过返回值测试,不过在Mozilla Firefox 1.0里麻烦就大了,第3、4种方法

没有任何的返回值,而在控制台里发出了报错信息:错误: document.all has no properties ,而第7种方法依旧返回“undefined

”。

小 结

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

以下只能用name:  
   1.    表单(form)的控件名,提交的数据都用控件的name而不是id来控制。因为有许多name会同时对应多个控件,比如

checkbox和radio,而id必须是全文档中唯一的。此外浏览器会根据name来设定发送到服务器的request。因此如果用id,服务器是无

法得到数据的。  
   2.    frame和window的名字,用于在其他frame或window指定target。  

以下只能用id:  
   1.    label与form控件的关联,  
   My    Input  
     
   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的值,当然如果不考虑兼容性,以上9种方

法都可以在IE里运行通过(IE5.0没测试过)。

附:测试源代码



     
    



    
    
    
    
    
    
    
    
    
    



    
 
 

您可能感兴趣的文章:

  • HTML超文本标记语言教程及实例
  • php实例分享之html转为rtf格式
  • HTML 基础知识教程及代码实例
  • CodeIgniter框架实例之过滤HTML危险代码
  • HTML 标准颜色值实例代码表
  • C#将html table 导出成excel实例
  • jquery操作HTML5 的data-*的用法实例分享
  • PHPMailer发送HTML内容、带附件的邮件实例
  • jQuery中使用data()方法读取HTML5自定义属性data-*实例
  • C#.NET采用HTML模板发送电子邮件完整实例
  • Asp.net动态生成html页面的实例详解
  • c#远程html数据抓取实例分享
  • C#使用MailAddress类发送html格式邮件的实例代码
  • jQuery设置与获取HTML、文本与值实例
  • jQuery设置与获取HTML,文本和值的简单实例
  • JQuery解析HTML、JSON和XML实例详解
  • Java中使用开源库JSoup解析HTML文件实例
  • python发送邮件的实例代码(支持html、图片、附件)
  • Jsoup解析HTML实例及文档方法详解
  • PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
  • HTML网页中的html body onload自动跳转方法介绍及自动跳转代码示例
  • 去除HTML标签删除HTML示例代码
  • HTML网页的Meta Refresh自动跳转方法介绍及Meta Refresh自动跳转代码示例
  • python实现html转ubb代码(html2ubb)
  • Html checkbox标签如何设置默认选中以及用js操作checkbox代码示例
  • HTML恶意代码过滤 AntiSamy
  • HTML网页中的javaScript自动跳转方法介绍及javaScript自动跳转代码示例
  • 把 CDATA 中的内容(有可能是不规范的Html代码)以Html方式展现出来。
  • PHP去除html标签,php标记及css样式代码参考
  • HTML代码高亮库 GeSHi
  • php将html特殊字符转换成html字符串的函数:htmlspecialchars()介绍及代码举例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.swing.text.html类html.attribute的类成员方法: name定义及介绍
  • java命名空间javax.swing.text.html.parser类element的类成员方法: name定义及介绍
  • java命名空间javax.swing.text.html.parser类dtd的类成员方法: name定义及介绍
  • java命名空间javax.swing.text.html.parser类entity的类成员方法: name定义及介绍
  • java命名空间javax.swing.text.html.parser类attributelist的类成员方法: name定义及介绍
  • java命名空间javax.swing.text.html.parser接口dtdconstants的类成员方法: name定义及介绍
  • java命名空间javax.swing.text.html.parser接口dtdconstants的类成员方法: names定义及介绍
  • java命名空间javax.swing.text.html.parser类attributelist的类成员方法: name2type定义及介绍
  • java命名空间javax.swing.text.html.parser类element的类成员方法: name2type定义及介绍
  • java命名空间javax.swing.text.html.parser类attributelist的类成员方法: type2name定义及介绍
  • java命名空间javax.swing.text.html.parser类entity的类成员方法: name2type定义及介绍
  • java命名空间javax.swing.text.html类html.tag的类成员方法: html定义及介绍
  • 基于HTML5的幻灯片 html5slides
  • java命名空间javax.swing.text.html类html.tag的类成员方法: html.tag定义及介绍
  • 基于 KBEngine 的 HTML5 插件 kbengine_html5
  • java命名空间javax.swing.text.html类html.unknowntag的类成员方法: html.unknowntag定义及介绍
  • 让 IE 支持 HTML5 html5shim
  • java命名空间javax.swing.text.html类htmleditorkit.inserthtmltextaction的类成员方法: html定义及介绍
  • HTML文档格式化工具 HTML Tidy
  • java命名空间javax.swing.text.html类html的类成员方法: getallattributekeys定义及介绍
  • HTML5 在线工具 html5demos
  • java命名空间javax.swing.text.html.parser类dtd的类成员方法: html定义及介绍
  • 框架网页中如何使用sendredirect(a.html),使得a.html不显示在框架中,是整页显示!
  • java命名空间javax.swing.text.html类html.tag的类成员方法: comment定义及介绍
  • Sar数据转HTML Sar2html
  • java命名空间javax.swing.text.html类html.attribute的类成员方法: color定义及介绍
  • 关于editplus的使用,编译完生成.class后,我又编写了html来执行applet,将其保存,如何经ie解释打开(直接在editplus上操作)不是显示html语言呀
  • java命名空间javax.swing.text.html类html.attribute的类成员方法: vlink定义及介绍
  • asp.net去除HTML标签删除HTML小例子
  • java命名空间javax.swing.text.html类html.attribute的类成员方法: rel定义及介绍
  • 用正则查找html中有id属性的html标签


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3