Javascript не работает в Mozilla Firefox - PullRequest
1 голос
/ 30 января 2011

Привет всем, я пишу следующий код

<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 ]

4 голосов
/ 30 января 2011

Я знаю, что это прозвучит глупо, но правда в том, что: это уже не 1995 .

Этот код работал бы отлично десять лет назад, но стандарты и спецификацииС тех пор значительно изменилось.

Давайте начнем сверху:

<form name=f>

Все html-атрибуты должны быть заключены в кавычки.Для согласованности используйте двойные кавычки: <form name="f"> намного лучше.

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

Избегайте событий встроенных сценариев.Если функциональность когда-либо изменится, или вы захотите удалить функцию, вам придется просмотреть каждую страницу и настроить функцию.Лучший способ - присвоить кнопке идентификатор и добавить событие onclick с помощью сценариев:

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

Теперь очередь сценария:

<script language=javascript>

Вам следует использовать атрибут typeс действительным MIME типом .Кроме того, когда это возможно, перемещайте ваши сценарии во внешний файл сценария.Если это невозможно, убедитесь, что либо XML кодирует ваш скрипт, либо заключает его в теги CDATA:

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

ИЛИ

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

Наконец, настоящая проблема с вашим скриптом.

Свойство f, на которое вы ссылаетесь, является членом document, а не window.Я полагаю, что IE поместит ссылку на оба, но просто не безопасно полагаться на любое поведение.

Дайте форме идентификатор: <form id="f"> и получите элемент из b[12]click функций

function b1click()
{
  var f = document.getElementById('f');
  f.action = 'Login.jsp';
  f.submit();
}
2 голосов
/ 30 января 2011

Прежде всего, измените это name="foo" на id="foo".Имена в основном используются внутри самой формы.

Теперь попробуйте ссылаться на вашу форму, используя document.formID, а не просто formID.formID является переменной, которая не определена, но document.formID является фактическим элементом формы:

function b1click()
{
  document.f.action="Login.jsp";
  document.f.submit();
}
function b2click()
{
  document.f.action="Logout.jsp";
  document.f.submit();
}
1 голос
/ 30 января 2011

Дайте форму id и обратитесь к ней, используя:

var form = document.getElementById('formId');
0 голосов
/ 30 января 2011

Существует несколько способов ссылки на вашу форму.

Если вы определите свою форму как <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'
0 голосов
/ 30 января 2011

Вы должны процитировать входные атрибуты или любые атрибуты по этому вопросу.И ваш 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...