我无法找到javascript代码的以下行为的合理解释。 我对javascript并不熟悉,如果以下代码有效。
在迁移的遗留应用程序中,有以下代码:
function myFunctionName(name)
{
for(k=0; k < document.budget_sections.length; ++k) {
//...do something
}
}
请注意document.budget_sections.length
部分。在生产中,此代码抛出一个错误,指出无法访问属性长度为null。在我的开发环境中运行良好。
由于budget_sections
是表单元素的ID(<form id="budget_sections" method="post" runat="server">
),因此我将代码更改为我已知的语法:
function myFunctionName(name)
{
var form = document.getElementById("budget_sections");
for(k=0; k < form.length; ++k) {
//...do something
}
}
此语法/符号在整个应用程序中使用,适用于大多数页面。这里的问题是:为什么这个旧代码仍然有用,为什么它现在会破坏?我以前从未阅读过document.DOM-object.xxx
符号,但我无法找到有关它的文档。
答案 0 :(得分:1)
由于budget_sections是元素的ID
不,这是表格的名称。
document.formname.length
仍然有效。
我找不到有关它的文档。
以下是MDN中document.images.length
<强> MDN link 强>
properties
中所有这些都是document
。您可以在该页面的左侧边栏中阅读有关它的更多信息。您将找到与document.DOM_Object.property
答案 1 :(得分:1)
我认为那是旧记谱法。如果您将表单的名称属性设置为&#34; budget_sections&#34;而不是id然后它将工作:
<!DOCTYPE html>
<html>
<body>
<form name="xx">
Form 1
</form>
<form name="xx">
Form 2
</form>
<button onclick="alert(document.xx.length)">Number of forms</button>
</body>
</html>
&#13;
或者您可以使用表单而不是名称值获得相同的结果:
<!DOCTYPE html>
<html>
<body>
<form name="xx">
Form 1
</form>
<form name="xx">
Form 2
</form>
<button onclick="alert(document.forms.length)">Number of forms</button>
</body>
</html>
&#13;
答案 2 :(得分:0)
如果我记得我的IE6天正确document.forms ['budget_sections']以获取表单项,那应该使用...
IE和Netscape如何处理事情之间存在差异。但我不确定,因为那是超过15年前的嘿。