“document.forms 不是函数”与“document.forms(0)”

Der*_*rek 3 javascript internet-explorer mozilla document

我在新工作中维护许多旧网站和 CMS 系统,其中一个遇到了问题。ASP 站点正在使用 JavaScript,此行今天停止工作(或比今天稍早):

document.forms(0)
Run Code Online (Sandbox Code Playgroud)

控制台会报告Uncaught TypeError: document.forms is not a function。谷歌搜索后,我发现我可以将其替换为:

document.forms[0]
Run Code Online (Sandbox Code Playgroud)

并继续前进,但是,该网站和文件中到处都是这种参考。

谁能解释一下可能发生了什么?Chrome、IE 和 Firefox 无法运行,浏览器或 JavaScript 是否有更新?document.forms(0)我在搜索中似乎找不到。奇怪的。

Der*_*rek 6

我将发布到目前为止我的答案,就像评论中提到的那样,这不是所有浏览器的标准,它可以在 IE 中工作,但通常没有其他内容:

document.forms(0) //IE only
Run Code Online (Sandbox Code Playgroud)

这是正确的方法:

document.forms[0] //All browsers (including IE)
Run Code Online (Sandbox Code Playgroud)

我找到了一篇文章(Mozilla 开发者网络),其中引用了圆括号(链接),说document.forms(0)IE-specific ways to access elements并且document.forms[0]W3C web standards replacements

为了确认这一点,我做了一些测试,BrowserStack发现所有版本都IE可以工作,除了Chrome版本 15 和 16(BrowserStack 在其系统上的前两个版本)之外,没有其他版本可以工作。XP)之外,其他版本都不起作用。

使用以下代码,否则您的网站将仅兼容 IE:document.forms[0]

也许我的客户一直使用 IE,只是切换到 Chrome 或其他浏览器。我还没有确认,该网站是否有任何时间的分析。