Javascript在Mozilla Firefox中不起作用

时间:2011-01-30 19:04:10

标签: javascript firefox javascript-events

大家好,我写下面的代码

<form name=f>
<input type=button value="Button1" onclick=b1click()>
<input type=button value="Buttone2" onclick=b2click()>
<script language=javascript>
function b1click()
{
  f.action="Login.jsp";
  f.submit();
}
function b2click()
{
  f.action="Logout.jsp";
  f.submit();
}
</script>
</form>

此代码在Internet Explorer中正常工作但该操作在Mozilla Firefox 3.6.2中不起作用如何解决此问题?请任何人帮助我。 感谢

5 个答案:

答案 0 :(得分:4)

我知道这听起来很讽刺,但问题的真相是:不再是1995年

这段代码在十年前就会发挥很大作用,但自那时起标准和规范发生了重大变化。

让我们从顶部开始:

<form name=f>

所有 html属性值都应该用引号括起来。为了保持一致,请使用双引号:<form name="f">要好得多。

<input type="button" value="Button1" onclick="b1click()">

避免内联脚本事件。如果功能发生变化,或者您想要删除某个功能,则必须通过每个页面并调整该功能。更好的方法是给按钮一个ID,并通过脚本添加onclick事件:

HTML:
<input type="button" value="Button1" id="button1">
JS:
document.getElementById('button1').onclick = b1click;

现在转到剧本:

<script language=javascript>

您应该将type属性与有效MIME type一起使用。此外,只要有可能,请将脚本移动到外部脚本文件。如果无法做到这一点,请确保对您的脚本进行XML编码,或将其封装在CDATA标记中:

<script type="text/javascript" src="path/to/script.js"></script>

OR

<script type="text/javascript">
/* <![CDATA[ */
... some code ...
/* ]]> */
</script>

最后是你脚本的真正问题。

您引用的f属性是document的成员,而不是 window。我相信IE会将参考文献放在两者上,但依赖这两种行为是不安全的。

为表单提供ID:<form id="f">,并从b[12]click函数中获取元素

function b1click()
{
  var f = document.getElementById('f');
  f.action = 'Login.jsp';
  f.submit();
}

答案 1 :(得分:2)

首先,将name="foo"更改为id="foo"。名称主要用于表单中。

现在,尝试使用document.formID引用您的表单,而不只是formIDformID是一个未定义的变量,但document.formID是实际的表单元素:

function b1click()
{
  document.f.action="Login.jsp";
  document.f.submit();
}
function b2click()
{
  document.f.action="Logout.jsp";
  document.f.submit();
}

答案 2 :(得分:1)

给表单一个id并使用以下命令引用它:

var form = document.getElementById('formId');

答案 3 :(得分:0)

您应该引用输入属性或任何属性。并且您的script不属于表单之后,例如在body中,而是在HEAD元素中。

适用于IE,Firefox和Chrome。

<html>
<head>
<script language="javascript">
function b1click()
{
  f.action="Login.jsp";  // better is document.f., but f. appears to work as well
  f.submit();
}
function b2click()
{
  f.action="Logout.jsp";
  f.submit();
}
</script>
</head>
<body>
<form name="f">
<input type="button" value="Button1" onclick="b1click()">
<input type="button" value="Buttone2" onclick="b2click()">
</form>
</body>
</html>

答案 4 :(得分:0)

有几种方法可以引用您的表单。

如果您将表单定义为<form name="Login" id="LoginFrom"></form>

方法1

如果您的表单是页面中唯一的表单,则可以使用:

document.forms[0].action = 'Login.jsp';

方法2

如果您的表单不是页面中唯一的表单,您可以使用表单名称来引用表单,例如

document.Login.action = 'Login.asp';

方法3

表单也可以使用DOM函数getElementByID引用。

document.getElementByID('LoginForm').action = 'Login.asp'