一个输入与另一个输入的ID具有相同名称时的含义

用户名

以下脚本使我感到惊讶。它产生以下结果:

互联网浏览

aaa:未定义bbb:未定义ccc:value3 ddd:value4 eee:value5

FireFox和Chrome

aaa:bbb:ccc:value3 ddd:value4 eee:value5

为什么当一个输入与另一个输入的名称具有相同的ID(或相反)时,该输入没有值?

function testResults(form) {
  alert([
    "aaa: " + form.aaa.value,
    "bbb: " + form.bbb.value,
    "ccc: " + form.ccc.value,
    "ddd: " + form.ddd.value,
    "eee: " + form.eee.value
  ].join(',    '));
}
<form>
  <input type="text" name="aaa" id="bbb" value="value1" />
  <input type="text" name="bbb" id="aaa" value="value2" />
  <input type="text" name="ccc" id="ccc" value="value3" />
  <input type="text" name="ddd" value="value4" />
  <input type="text" id="eee" value="value5" />
  <input type="submit" onclick="testResults(this.form)"/>
</form>

i

规范中定义了通过名称或ID访问表单元素时使用的算法

当一个form元素被编入索引的命名属性检索,用户代理必须执行下列步骤:

  1. 候选RadioNodeList对象为一个活动对象,其中包含所有列出的元素,其形式拥有者是form具有id属性或name等于nameinputtype属性元素,但其属性处于树形图像按钮状态元素除外

  2. 如果候选人为空,则使候选人成为一个活动RadioNodeList对象,其中包含作为img元素后代的所有元素,form并具有按树顺序id属性或name等于name属性

  3. 如果候选人为空,则nameform元素的过去名称映射中条目之一的名称:返回与该映射中的name关联的对象

  4. 如果候选者包含多个节点,请返回候选者并中止这些步骤。

  5. 否则,候选对象仅包含一个节点。元素的过去名称映射中的候选项添加从名称到节点的映射,将先前的条目替换为相同的名称(如果有)。form

  6. 返回候选节点

具体来说,问题在于有两个候选项form.aaa,因此它返回一个RadioNodeList集合(步骤4):

form.aaa; // RadioNodeList [ <input#bbb>, <input#aaa> ]
form.aaa[0]; // <input#bbb>
form.aaa[1]; // <input#aaa>

因为form.eee只有一个候选者,所以将其返回(步骤6):

$0.eee; // <input#eee>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

计算具有相同名称的输入的值,并将最终值复制到另一个输入

来自分类Dev

C ++函数被另一个DLL中具有相同名称的函数隐藏

来自分类Dev

在另一个节点中具有相同名称的XML节点

来自分类Dev

在另一个位置查找并创建具有相同名称的空文件

来自分类Dev

从另一个具有相同名称的 api 更改 td 的值

来自分类Dev

Webpack警告-忽略大小写时,存在另一个具有相同名称的模块

来自分类Dev

Webpack警告-忽略大小写时,存在另一个具有相同名称的模块

来自分类Dev

keyup事件仅从第一个输入获得值,其中在一个具有相同名称和ID的表中多个可用

来自分类Dev

将任何名称的网页重定向到另一个文件夹中具有相同名称的另一个网页

来自分类Dev

为什么一个输入比另一个输入具有更大的权重

来自分类Dev

为什么一个输入比另一个输入具有更大的权重

来自分类Dev

如果我在另一个文件中声明了另一个具有相同名称的变量会怎样?

来自分类Dev

从具有相同输入和输出数量的另一个函数中调用一个函数

来自分类Dev

如何在 Laravel Dusk 中输入与另一个输入字段具有相同类名的输入字段

来自分类Dev

尝试从另一个名称空间调用具有相同名称的函数时,函数调用中的参数太少

来自分类Dev

应用程序启动时,同一VM中已存在另一个具有相同名称“”的CacheManager

来自分类Dev

如何从多个具有相同名称的输入文本字段中仅获取一个值?

来自分类Dev

使用django-storage和boto保存具有相同名称的另一个文件

来自分类Dev

当另一个具有相同名称的Type反映在F#模块上

来自分类Dev

如何将参数传递给另一个具有相同名称的内部函数?

来自分类Dev

如何恢复由另一个具有相同名称和大小的文件替换的文件

来自分类Dev

如何在Windows窗体中轻松地将一个控件替换为另一个具有相同名称的控件?

来自分类Dev

apache 2.4模块一个处理程序在另一个具有相同名称的处理程序中调用函数

来自分类Dev

使用沙箱打开一个文件,并可以访问另一个具有相同名称的文件

来自分类Dev

将文件从一个文件夹移动到另一个具有相同名称的文件夹

来自分类Dev

插入具有相同ID的另一个表时合并数据

来自分类Dev

Excel VBA-当按钮具有相同名称时单击一个按钮

来自分类Dev

创建一个从一个文件夹到另一个具有不同名称的符号链接?

来自分类Dev

当另一个输入有值时,jQuery禁用输入

Related 相关文章

  1. 1

    计算具有相同名称的输入的值,并将最终值复制到另一个输入

  2. 2

    C ++函数被另一个DLL中具有相同名称的函数隐藏

  3. 3

    在另一个节点中具有相同名称的XML节点

  4. 4

    在另一个位置查找并创建具有相同名称的空文件

  5. 5

    从另一个具有相同名称的 api 更改 td 的值

  6. 6

    Webpack警告-忽略大小写时,存在另一个具有相同名称的模块

  7. 7

    Webpack警告-忽略大小写时,存在另一个具有相同名称的模块

  8. 8

    keyup事件仅从第一个输入获得值,其中在一个具有相同名称和ID的表中多个可用

  9. 9

    将任何名称的网页重定向到另一个文件夹中具有相同名称的另一个网页

  10. 10

    为什么一个输入比另一个输入具有更大的权重

  11. 11

    为什么一个输入比另一个输入具有更大的权重

  12. 12

    如果我在另一个文件中声明了另一个具有相同名称的变量会怎样?

  13. 13

    从具有相同输入和输出数量的另一个函数中调用一个函数

  14. 14

    如何在 Laravel Dusk 中输入与另一个输入字段具有相同类名的输入字段

  15. 15

    尝试从另一个名称空间调用具有相同名称的函数时,函数调用中的参数太少

  16. 16

    应用程序启动时,同一VM中已存在另一个具有相同名称“”的CacheManager

  17. 17

    如何从多个具有相同名称的输入文本字段中仅获取一个值?

  18. 18

    使用django-storage和boto保存具有相同名称的另一个文件

  19. 19

    当另一个具有相同名称的Type反映在F#模块上

  20. 20

    如何将参数传递给另一个具有相同名称的内部函数?

  21. 21

    如何恢复由另一个具有相同名称和大小的文件替换的文件

  22. 22

    如何在Windows窗体中轻松地将一个控件替换为另一个具有相同名称的控件?

  23. 23

    apache 2.4模块一个处理程序在另一个具有相同名称的处理程序中调用函数

  24. 24

    使用沙箱打开一个文件,并可以访问另一个具有相同名称的文件

  25. 25

    将文件从一个文件夹移动到另一个具有相同名称的文件夹

  26. 26

    插入具有相同ID的另一个表时合并数据

  27. 27

    Excel VBA-当按钮具有相同名称时单击一个按钮

  28. 28

    创建一个从一个文件夹到另一个具有不同名称的符号链接?

  29. 29

    当另一个输入有值时,jQuery禁用输入

热门标签

归档