我不熟悉如何调试此类问题。在我的HTML中,我可以说我有一个表单:
<form name="myForm" >
<table>
<tr>
<td>
<input type="radio" name="myType" value="val" onclick="someFunc(this.value)"checked > stuff here
<input type="radio" name="myType" value="val2" onclick="someFunc(this.value)"> stuff2 here
</td>
..
</form>
在Javascript代码中,我通过以下方式引用它:
myForm.myType[0].checked
在IE中这很好用,但不适用于Firefox。在Firefox中我试过:
alert (myForm)
还有:
if (frmDateType == null)
{
alert('null!');
}
else
{
alert('not null!');
}
然而,在这两种情况下,Firefox甚至都没有显示警报,但它基本上什么都不做,尽管它在IE中很好。我安装了Firebug并且没有显示任何错误(或者至少我找不到它们)。所以我不确定如何调试这样的问题,为什么我没有看到任何错误以及为什么Firefox不喜欢MyForm?有小费吗?
答案 0 :(得分:2)
您假设具有name属性的任何内容都将获得匹配的全局变量。这是非标准行为。
您无论如何都不应该提供表单名称属性,请参阅规范:
请注意。包含此属性是为了向后兼容。应用程序应使用id属性来标识元素。
因此,首先使用id替换name属性。
<form id="myForm">
然后您可以通过以下方式访问表单:
document.getElementById('myForm')
或
document.forms.myForm
答案 1 :(得分:1)
我不确定为什么你的Firefox没有显示任何警报;但是你应该检查Firefox错误控制台。只需单击地址栏并按键盘上的 Alt 键即可突出显示系统菜单;在工具下 - &gt; Web开发人员 - &gt;通过Web控制台,您将能够在加载时看到页面上遇到的所有JavaScript,HTML和CSS错误。
-
请确保您在JavaScript中引用该表单:
myForm = document.getElementById("myForm"); // This requires the form to have an id.
或者,您可以使用其名称引用表单(并不总是有效!)
myForm = document.forms.myForm;