代码驿站移动版
频道导航
HTML/Xhtml
CSS
JavaScript
HTML5
PHP教程
ASP.NET
正则表达式
AJAX
ThinkPHP
Yii
MySQL
MariaDB
Oracle
MongoDB
Redis
DedeCMS
PHPCMS
帝国CMS
WordPress
Discuz
其它CMS
Zend Studio
Sublime
Notepad
Dreamweaver
Windows
Linux
Nginx
Apache
IIS
CentOS
Ubuntu
Debian
网站优化
工具资源
PHP源码
ASP.NET源码
其它源码
图标素材
按钮素材
字体素材
DedeCMS模板
帝国CMS模板
PHPCMS模板
WordPress模板
Discuz!模板
单页模板
开发软件下载
服务器软件下载
广告投放
联系我们
版权申明
软件编程
网页前端
移动开发
数据库
服务器
脚本语言
PHP代码
JAVA代码
Python代码
Android代码
当前位置:
主页
>
网页前端
>
HTML代码
>
浅谈html中id和name的区别实例代码
时间:2021-08-03 08:58:07 | 栏目:
HTML代码
| 点击:次
我们可以通过一段代码来分析一下其中的微妙差别:
<form method="post" action="" name="demoform">
<input type="text" name="oDemo" id=”oDemo2” value="DEMO" />
</form>
在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文本类型定义得严格一点,在源代码开头加上:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
使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控件的关联,
<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的值,当然如果不考虑兼容性,以上9种方
法都可以在IE里运行通过(IE5.0没测试过)。
附:测试源代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title></title>
</head>
<body>
<form method="post" action="" name="demoform">
<input type="text" name="oDemo" value="DEMO" id="oDemo2" /><br />
<input type="button" value="oDemo" onclick="alert(oDemo.value)" /><br />
<input type="button" value="demoform.oDemo" onclick="alert(demoform.oDemo.value)" /><br />
<input type="button" value="document.all.oDemo" onclick="alert(document.all.oDemo.value)" /><br />
<input type="button" value="document.all.demoform.oDemo" onclick="alert(document.all.demoform.oDemo.value)" /><br />
<input type="button" value="document.forms[0].oDemo" onclick="alert(document.forms[0].oDemo.value)" /><br />
<input type="button" value="document.forms['demoform'].oDemo" onclick="alert(document.forms['demoform'].oDemo.value)" /><br />
<input type="button" value="document.forms['demoform'].childNodes[0]" onclick="alert(document.forms
['demoform'].childNodes[0].value)" /><br />
<input type="button" value="document.forms['demoform'].elements[0]" onclick="alert(document.forms
['demoform'].elements[0].value)" /><br />
<input type="button" value="document.getElementById('oDemo2')" onclick="alert(document.getElementById('oDemo2').value)" /><br />
</form>
</body>
</html>
您可能感兴趣的文章:
CSS hack实现 CSS完美兼容IE6/IE7/FF的通用方法
用CSS控制的闪烁效果
css不用图片美化按钮
兼容多浏览器实现半透明(Opera ie firefox)
什么是XHTML?
相关文章
11-12
用CSS给图片打标的代码
10-07
iframe背景透明的设置方法
11-03
怎么改善现有网站
12-03
不要使用CSS Expression的原因分析
11-18
CSS Hack 汇总快查
JQuery
VUE
AngularJS
MSSql
MySQL
MongoDB
Redis
Linux
Tomcat
Nginx
网站首页
广告投放
联系我们
版权申明
联系站长