1,name 常用于 form 表单
在网页做 Post 提交时, 是以 Form(即表单域) 为单位进行提交的, 一个 Form 里有若干个表单对象 (如 < input type="text" name="UserName" value="请输入姓名"/>), 同一个页面里可以为多个 Form(Asp.net 不同, 它只允许有一个, 且名字必须为 Form1), 在表单表提交到服务器端后, 可以直接通过 Name 属性取到表单域的值, 却无法通过 ID 直接取到该表表单对象的值
另外, 同一个 Form 里不能有多个 name 属性相同的 html 标记, 但如果一个网页中有多个 Form, 则不同的 Form 里可以有同个 Name 属性的标记而 ID 是全局的, 在一个 HTML 文档里不能有多个节点使用相同的 ID, 无论它处在哪个 Form 里
2,id 常用于设置 CSS 样式
在建立 CSS 样式的时候, 可以建立 ID 样式表 (以#为前缀), 使具有该 ID 的样式直接应用该样式, 而无法建立 Name 样式表
使用 Javascript 进行 Dom 节点定位时建议使用 getElementById 方法, 因为只有 ID 能唯一标识一个节点, 而同一个网页里可能会有多个 Name 属性相同的节点, 它们分别处在不同的 Form 里
来源: http://www.92to.com/bangong/2018/02-07/33290739.html