HTML name 属性

HTML name 语法

在 HTML 中,name 属性用来为某些元素指定一个 “名字”,这个名字在表单提交、脚本操作等场景中非常有用。

name 属性可以应用在以下几类元素上:

  • 表单元素:包括 inputtextareaselectbutton 等。
  • iframe:用于指定 iframe 的名称,可以在脚本中引用,或作为链接的目标 (target)。
  • map:用于 img 元素的 usemap 属性引用。
  • meta:用于定义文档级别的元数据,如 name="description" 或 name="keywords"。

语法:

<element name="名称" >

说明:

对于 name 属性来说,小伙伴们要清楚以下几点:

  • 对于表单元素来说,name 是必须的:如果你不给一个表单控件设置 name,当用户提交表单时,它的值就不会被发送到服务器。也就是说,服务器根本不知道用户填写了什么。
  • 单选按钮的互斥效果依赖 name:在同一个表单中,如果你想让一组单选按钮互相排斥(用户只能选一个),它们必须拥有相同的 name 值。
  • 在 JavaScript 中获取元素:你可以用 document.getElementsByName("名称") 来获取所有拥有这个 name 的元素。这个方法返回的是一个 “集合”(NodeList),可以像数组那样访问。

id 和 name 的区别

id 和 name 这两个都是表单元素中常用的属性,它们之间的区别如下:

  • id是元素的唯一身份证。主要用于 CSS 样式钩子(#id)、JavaScript 获取元素(getElementById)以及 label 标签的绑定。它主要在客户端(浏览器)发挥作用。
  • name是元素的数据名称。主要用于在表单提交时,告诉服务器这个数据是什么,以及单选按钮或复选框的分组。它主要在与服务器交互时发挥作用。

HTML name 摘要

适用元素 input、textarea、select、button、iframe、map、meta
使用频率
兼容性 查看
官方文档 查看
MDN 查看

HTML name 示例

接下来,我们将通过几个简单的例子来讲解一下 HTML name 属性是如何使用的。

示例 1:name 属性用于文本框

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
    <h3>用户登录</h3>
    <form action="/login" method="post">
        <p>
            <label>
                账号:
                <input type="text" name="account" required>
            </label>
        </p>
        <p>
            <label>
                密码:
                <input type="password" name="password" required>
            </label>
        </p>
        <p>
            <button type="submit">登录</button>
        </p>
    </form>
</body>
</html>

页面效果如下图所示。

name 属性用于文本框

分析:

当我们点击【登录】按钮后,如果 “账号” 填写的内容为 “Jack”,然后 “密码” 填写的内容为 “666”,那么服务器会收到类似于下面这样的数据。

account=Jack&password=666

name 属性的值是服务器端用来识别接收到的数据的键。如果没有 name 属性,这些输入的值将不会被发送。

示例 2:name 属性用于单选按钮

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
    <form method="post">
        <fieldset>
            <legend>性别:</legend>
            <p>
                <label>
                    <input type="radio" name="gender" value="男"></label>
                <label>
                    <input type="radio" name="gender" value="女"></label>
            </p>
        </fieldset>
 
        <fieldset>
            <legend>年龄:</legend>
            <p>
                <label>
                    <input type="radio" name="age" value="80后">
                    80后
                </label>
                <label>
                    <input type="radio" name="age" value="90后">
                    90后
                </label>
                <label>
                    <input type="radio" name="age" value="00后">
                    00后
                </label>
            </p>
        </fieldset>
        
        <p>
            <button type="submit">提交</button>
        </p>
    </form>
</body>
</html>

页面效果如下图所示。

name 属性用于单选按钮

分析:

对于同一组的单选按钮,必须要设置一个相同的 name,这样才会把这些选项归为同一个组上面。上面例子定义了两组单选按钮,在每一组中,选项之间都是互斥的。也就是说,在同一组中,只能选中其中一项。

如果我们把 name 属性去掉,此时浏览器是无法判断哪些单选按钮是同一组的,从而导致所有单选按钮都可以被选中(此时不存在互斥效果)。小伙伴们可以自行试一下。

此外,上面例子还用到 fieldsetlegend 这两个标签,它们可以用于实现比较美观的分组效果。

上一篇: title

下一篇: value

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号