我有一个使用 IIS Express 在我的 XP 系统上本地运行的 ASP.NET 站点。该网站有一个在 Windows 服务器上运行的实时版本。
在网页中,Javascript 通常会使用 document.formName
样式引用页面上的表单,其中 formName
是表单的名称。据我所知,这是一种跨浏览器的方法,还有 document.forms.formName
和 document.forms[0]
等等。
在我的本地开发站点上,引用 document.frm1
(我知道,糟糕的命名习惯)出错了;它是未定义的。另一方面,document.forms.frm1
工作正常。奇怪的是,这不会发生在服务器上,尽管就代码而言,这两个页面是相同的。我已经用 Firebug 以及 IE8 和 Firefox 6 仔细检查过。
另一个奇怪的部分:用Firebug检查,document.frm1
是未定义的,但是document.frmClose
(另一种形式)存在!啊?!
以前有人遇到过这种情况吗?
最佳答案
编辑 1
我做了一些实验,发现 id
属性用于 document.forms
,而 name
属性似乎用于对于 document.formName
原始答案
确保在 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/