【问题标题】:Can't call Form element in Firefox无法在 Firefox 中调用表单元素
【发布时间】:2011-12-28 06:13:10
【问题描述】:

我不太熟悉如何调试此类问题。在我的 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?有小费吗?

【问题讨论】:

  • 你试过使用getElementById函数吗?不过,您必须将 name 属性更改为 id。

标签: javascript html forms firefox html-table


【解决方案1】:

你假设任何具有 name 属性的东西都会得到一个匹配的全局变量。这是非标准行为。

无论如何,您都不应该提供表单名称属性,请参阅规范:

注意。包含此属性是为了向后兼容。应用程序应该使用 id 属性来识别元素。

所以,首先将 name 属性替换为 id。

<form id="myForm">

然后您可以通过以下方式访问表单:

document.getElementById('myForm')

document.forms.myForm

【讨论】:

  • 好的,是的,我将名称更改为 ID,并且完整路径有效,即 document.forms.myForm 与 myForm,谢谢
  • document.forms.myForm 即使不将name 更改为id 也能正常工作。并且 HTML5 没有关于为此目的使用 name 属性的等效警告。它只是说“name 属性表示表单集合中的表单名称。该值不能是空字符串,并且该值必须在它所在的表单集合中的表单元素中是唯一的,如果有的话。”跨度>
  • 是的,我认为这是 myForm vs document.forms.myForm
【解决方案2】:

我不确定为什么您的 Firefox 没有显示任何警报;但您应该检查 Firefox 错误控制台。只需单击地址栏并按键盘上的 Alt 键即可突出显示系统菜单;在工具 -> Web 开发人员 -> Web 控制台下,您将能够看到加载时页面上遇到的所有 JavaScript、HTML 和 CSS 错误。

--

请确保您在 JavaScript 中正确引用了表单:

myForm = document.getElementById("myForm"); // This requires the form to have an id.

或者,您可以使用表单名称来引用表单(并非总是有效!)

myForm = document.forms.myForm;

【讨论】:

    猜你喜欢
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多