javascript - "document.formName"未定义?

标签 javascript asp.net

我有一个使用 IIS Express 在我的 XP 系统上本地运行的 ASP.NET 站点。该网站有一个在 Windows 服务器上运行的实时版本。

在网页中,Javascript 通常会使用 document.formName 样式引用页面上的表单,其中 formName 是表单的名称。据我所知,这是一种跨浏览器的方法,还有 document.forms.formNamedocument.forms[0] 等等。

在我的本地开发站点上,引用 document.frm1(我知道,糟糕的命名习惯)出错了;它是未定义的。另一方面,document.forms.frm1 工作正常。奇怪的是,这不会发生在服务器上,尽管就代码而言,这两个页面是相同的。我已经用 Firebug 以及 IE8 和 Firefox 6 仔细检查过。

另一个奇怪的部分:用Firebug检查,document.frm1是未定义的,但是document.frmClose(另一种形式)存在!啊?!

以前有人遇到过这种情况吗?

最佳答案

编辑 1

我做了一些实验,发现 id 属性用于 document.forms,而 name 属性似乎用于对于 document.formName

http://jsfiddle.net/GVjsv/


原始答案

确保在 DOM 准备好之前您的 javascript 没有执行。一种方法是将您的 javascript 放在页面底部,或者如果您使用的是框架,请确保将代码包装在 ready 类型的函数中:

jQuery: http://api.jquery.com/ready/

Mootools:http://mootools.net/docs/core/Utilities/DomReady

普通 javascript:

window.onload = function() {
  // Code to be run.
} 

服务器之间不一致的原因可能是本地开发服务器加载页面的速度比实时服务器快。时间安排使您通常不会在两个地方都遇到相同的错误 - 添加重点是因为如果您尝试了足够多的时间,您可能能够在两个地方重现错误。

关于javascript - "document.formName"未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7436277/

相关文章:

javascript - 有什么方法可以在 checkin Web 应用程序上本地更新 JSON 对象吗?

javascript - 使用输入值查找 <li> 中的精确文本

php - 文件API上传文件

javascript - ASP.NET OnClick 属性是 JavaScript 吗?

asp.net - 无需 cookie 即可跨多个域进行单点登录

c# - 为什么 CSS 和 JS 文件绕过 Asp.Net MVC 路由?

c# - 单独组装和路由中的 Controller

javascript - jquery for 循环而不是 underscore.js _.each

javascript - 将数组转换为单独的参数字符串

c# - Server.Transfer 和 Response.Redirect 有什么区别?