作为表单属性的表单元素

2024-03-12

如果表单中有一个表单元素,并且该元素有一个name or id,您可以直接从表单的 DOM 元素访问它作为具有该名称的属性。这种行为似乎得到了非常广泛的支持。是否有任何规范涵盖它?如果有,是哪一个规范?

此行为适用于表单elements收藏已指定 http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-76728479在 DOM2 HTML 规范中,但我并没有立即看到将元素转储为表单本身在任何地方指定的属性的业务,除非短语“它提供对所包含的表单控件以及表单元素的属性的直接访问。” here http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-40002357意思是说(如果是这样,哇,太微妙了,我把它读作指的是elements收藏)。我猜这只是遗留行为。

为了清楚起见:我不是问访问表单字段的最佳方式是什么,而是问标准是否涵盖这种行为。 (我也避免了将东西倾倒在window目的;那是另一个话题了。)

例子 (实时复制 http://jsbin.com/amahol):

HTML:

<form id="theForm">
<input type="text" name="field1" value="foo">
<input type="text" id="field2" value="bar">
</form>

JavaScript:

var f = document.getElementById("theForm");
console.log(f.elements.field1.value); // "foo", per spec
console.log(f.field1.value);          // also "foo"
console.log(f.elements.field2.value); // "bar", per spec
console.log(f.field2.value);          // also "bar"

我检查了 IE6、7、8 和 9、Firefox 4.0、Firefox 3.6、Chrome 12、Opera 11 和 Safari 5。它们都这样做(使表单字段在两个地方都可用)。


找到了在 HTML5 规范草案中 http://www.w3.org/TR/html5/forms.html#htmlformelement:

When a form元素是为索引属性检索建立索引,用户代理必须返回由item方法上的elements集合,当使用给定索引作为参数调用时。

Each form元素具有名称到元素的映射,称为过去的名字地图。它用于保留控件的名称,即使它们更改名称也是如此。

支持的属性名称是返回的对象当前支持的名称的并集elements属性,以及当前在过去名称映射中的名称。

When a form元素是为命名属性检索建立索引,用户代理必须运行以下步骤:

  1. If name是返回的对象支持的属性名称之一elements属性,然后运行以下子步骤:

    1. Let 候选人是返回的对象namedItem()方法返回的对象elements属性当传递name争论。

    2. If 候选人是一个元素,然后添加一个映射name to 候选人 in the form元素过去的名称映射,用相同的名称替换先前的条目(如果有)。

    3. Return 候选人并中止这些步骤。

  2. 否则,name是其中一项的名称form元素过去的名称映射:返回与之关联的对象name在那张地图里。

如果一个元素列在form元素过去的名称映射已从Document,那么它的条目必须从映射中删除。

...我们从DOM2 HTML 规范部分 http://www.w3.org/TR/DOM-Level-2-HTML/ecma-script-binding.html在 ECMAScript 语言映射上,索引通过[]最终成为对任一者的调用item(对于数字)或namedItem(对于字符串)。

感谢@Carey他对我其他相关问题的回答 https://stackoverflow.com/questions/6504372/form-elements-with-the-same-name-reflected-in-the-dom/6504598#6504598,这让我捂着脸查看了 HTML5 草案,因为他们试图将 HTML DOM 内容纳入规范中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

作为表单属性的表单元素 的相关文章

  • 将 Javascript 对象的属性从 string 更改为 int

    我有一个对象数组 每个对象具有三个属性 年份 总计 人均 例子 0 Object per capita 125 8 total 1007 2 year 2009 这些属性是字符串 我想创建一个循环来遍历数组并将它们转换为 int 我尝试了以
  • 如何删除除任何特定 id 之外的元素

    假设有一个父 id 其中包含许多元素 我想删除除一个元素之外的所有元素 ex parent id children not id n remove
  • 从函数返回函数的目的是什么?

    阅读一些遗留代码 发现 A prototype setSize function var v1 new Vector2 return function size var halfSize v1 copy size multiplyScala
  • 位置特征检测:固定

    我正在尝试找到一个脚本来检测设备是否放置position fixed元素相对于视口而不是整个文档 目前 标准桌面浏览器和 Mobile Safari 适用于 iOS 5 都是这样做的 而 Android 设备则相对于整个文档放置固定元素 我
  • Number.IsNaN() 比 isNaN() 更糟糕吗

    Soooooo isNaNJavaScript 显然被破坏了 比如 isNaN isNaN isNaN true isNaN false isNaN 0 返回 false 当它们看起来都是 不是数字 在 ECMAScript 6 中 草案包
  • 如何使用javascript确保元素仅在圆上朝一个方向移动?

    好吧 我承认我对三角学真的很糟糕 出于上下文的考虑 我将添加我在这里提到的问题中的内容 参考问题 https stackoverflow com a 39429290 168492 https stackoverflow com a 394
  • 导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

    我在尝试使用以下命令创建响应式菜单或下拉按钮时遇到问题Bootstrap 5一切似乎都正常 导航图标和下拉图标出现 但它不起作用 当我单击nav图标或dropdown按钮 无dropdown menu apears 我想特别提到的是 我还包
  • 如何使用 Greasemonkey 监视静态 HTML 页面的更改?使用哈希?

    我希望我的 Greasemonkey 脚本仅在其访问的静态页面具有与以前完全相同的内容时运行 现在我可以设置一个包含该页面哈希的变量 我正在寻找一种动态散列页面的方法 以便我可以将我的散列与生成的散列进行比较 关于如何即时实现散列的任何想法
  • React Router v4 不渲染组件

    React Router v4 渲染组件存在问题 在应用程序初始加载时 它将呈现与 URL 相对应的正确组件 但是 任何后续的组件Link单击不会呈现所需的组件 图书馆 反应路由器 4 2 2 https reacttraining com
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • 使用 Google 日历源时如何禁用 FullCalendar 中的活动链接?

    我正在使用 FullCalendar 库从 Google 日历加载日历中的事件 不幸的是 事件添加到日历后 它们是可点击的 当您点击该活动时 您会自动重定向到 Google 日历页面以查看该特定活动 或者如果您有足够的访问权限 则可以直接对
  • 使用 Javascript 设置 cookie [重复]

    这个问题在这里已经有答案了 我正在尝试构建我的第一个移动应用程序 它需要连接到我的 mysql 数据库并使用 json 返回数据 这很好 目前我有一个登录系统 一旦确定用户名和密码存在 它就会返回一条成功消息 对于下一步 我想在我的页面上使
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • Rails 3.1+ 的 Jasmine 与 Mocha JavaScript 测试 [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我对茉莉花有经验并且非常喜欢它 有谁有 Jasmine 和 Mocha 的经验 特别是 Rails 的经验吗 我想知道是否值得转用 我已经在 J
  • 有没有办法使用 ko.observableArray 作为地图?

    有没有办法使用ko observableArray http knockoutjs com documentation observableArrays html像地图 字典一样 例如 var arr ko observableArray
  • 什么是 WKWebView 中的 WKErrorDomain 错误 4

    fatal error LPWebView encounters an error Error Domain WKErrorDomain Code 4 A JavaScript exception occurred UserInfo 0x7
  • Flot 库将 y 轴设置为最小值 0 和最大值 24

    如何将 y 轴设置在 0 到 24 的范围内 这是我的代码 j plot j placeholder d1 xaxis mode time min new Date 2010 11 01 getTime max new Date 2011
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容

随机推荐