【问题标题】:javascript name vs IDjavascript名称与ID
【发布时间】:2010-10-14 18:18:46
【问题描述】:

据我所知,有两种方法可以从文本框中获取值

document.formName.textboxName.value;

document.getElementbyId('textboxId').value;

据我了解,使用表单名称意味着我要编写的代码更少,因为名称可用于发布数据和获取值(除了使用 ajax)。如果我只是使用标准表单发帖,我会使用name 发帖但我不能使用id 吗?

例如在 php 中我会使用

$_POST['texboxName']; 

如果我在文本框中有哪里和 ID,我无法使用 php 获取值?

这是推荐的标准方法,并且使用name 浏览器是否友好?如果可以的话请给个链接,谢谢。

【问题讨论】:

    标签: javascript xhtml standards


    【解决方案1】:

    这方面的终极指南是HTML specification

    突出的东西:

    • id 适用于任何 HTML 元素,而 name 仅适用于少数几个(ainputtextarea 以及其他一些元素)。
    • input(和textarea)元素需要设置name,如果您想提交它。

    【讨论】:

    • @Vilx - 我知道这有点旧,但想知道您所说的“共享同一个命名空间”是什么意思
    • @PeanutsMonkey - 感谢您向我指出这一点。我误会了。命名空间共享是only valid for anchor elements。该链接解释得更好,但简而言之,当在 URL 中使用 # 跳转到特定锚点时,它会同时查看 idname 属性以确定滚动到哪个锚点。如果有两个不同的锚点,其中一个的id 等于另一个的name,浏览器就会混淆。所以规范使这个无效。
    • 不要忘记getElementsByName() 会返回一个实时查询:每次访问返回数组中的一个元素,甚至只是它的长度时,都会再次查询 DOM。这将是超级慢! getElementById 性能总是更好 - 使用 id 而不是 name 的另一个理由。
    【解决方案2】:

    name 属性在提交表单期间使用,即创建将被处理到服务器的名称-值对。 id 属性用于定位 DOM 中的元素。通常这个名字只用在表单元素上

    参考资料:

    http://www.w3.org/TR/html401/interact/forms.html
    http://www.w3schools.com/html/html_forms.asp

    【讨论】:

      【解决方案3】:

      我通常两者都用。正如您所提到的,name 对于通过 JavaScript 使用数据以及一旦提交后也很有用。根据需要随意在name 中使用其他字符:当输入将用于数组服务器端时,我倾向于在我的名字中使用[]s。

      id 属性可用于通过 JS/DOM 访问元素。 <label>for 属性也使用它。例如,如果您使用复选框执行此操作,则单击标签将导致该框被选中。这是可用性的一大优势。

      【讨论】:

        【解决方案4】:

        我认为为每个表单元素设置一个名称 id 是一种很好的做法。原因是如果您想通过样式表添加标签或样式(您应该这样做),那么两者兼而有之是有意义的。

        至于使用 javascript 访问它:更好的方法是使用元素的 id,因为如果您更改表单的名称,一切都会中断。使用 id 时不会发生这种情况。

        【讨论】:

        • 大多数处理表单的 JavaScript 活动是从表单内部启动的(从按钮和字段事件或从表单本身的 onsubmit 事件),因此使用 this.formthis from调用者没有歧义。另请注意,“字段”可能涉及多个元素,因此通常需要按名称而不是 id 检查值(想想单选按钮和复选框)。
        【解决方案5】:

        我更喜欢使用 ID,因为代码的“功能”(即:您想要实现的功能)与语义无关。对我来说, .GetElementById('myid') 更突出,并且比仅将“myid”分散在代码中更具可读性。另外,您可以更轻松地重命名元素。那是我的 2p 价值!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-20
          • 2011-05-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多