Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Вопрос по вызову функции из отдельного файла


Автор: Ivanchenko Anton 18.8.2005, 11:27
Доброго времени суток, уважаемые.
Прошу помощи в решении следующей проблемы:
Есть текст (например "5-00-00"), который надо выводить в куче html-страниц. Я решил поступить хитро smile и сделать отдельный js-файл, который будет содержать функцию вывода:

Код

//Javascript Document
<!--
function menu1(){
document.write("5-00-00");
};
//-->


Теперь в самой html-странице в ячейке таблицы, где должен появиться заветный текст, набираю:

Код

<script language="JavaScript" type="text/JavaScript" src="menus.js">
menu1();
</script></td>


Я считал, что должна была вызваться функция menu1, которая вставит тект "5-00-00". Только вот не работает все это smile Подскажите пожалуйста, как правильно сделать?

Автор: Ace Wentura 18.8.2005, 12:14
Вот, наваял кое-что. Будут вопросы- пиши. Надеюсь, что это поможет.
Код

<html><head><title></title></head>
<script language="JavaScript" type="text/javascript">
<!--
function menu1(){
  document.getElementById("qwe").appendChild(document.createTextNode('5-00-00'));
}
<!---->
</script>

<body>
  <table width="100%" border="1">
    <tr>
      <td id="qwe">
        <script language="JavaScript" type="text/javascript">
        <!--
          menu1();
        <!---->
        </script>
      </td>
    </tr>
  </table>
</body>
</html>

Автор: Ivanchenko Anton 18.8.2005, 12:42
Спасибо, Ace Wentura, но это не совсем то smile . Моя проблема заключается в том, что надо запускать функцию menu1, находящуюся в отдельном файле menus.js.

Автор: Ivanchenko Anton 18.8.2005, 12:54
Вроде решил задачу smile

Сделал вот так, и все заработало:

Код

//Javascript Document
<!--
document.write("5-00-00");
//-->


Код

<td>
<script language="JavaScript" type="text/JavaScript" src="menus.js">
</script></td>


Получается, что если в теге <script> указан "src=...", то все что идет за этим тегом далее (до закрывающего </script>) не поспринимается? Или проблема в чем то другом была?

Автор: Aliance 18.8.2005, 13:58
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>© AlianceHTMLEditor [ http://editor.sut.net.ru/editor.html ]</TITLE>
<script type="text/javascript" language="JavaScript">
<!--//--><![CDATA[//><!--

function menu() {
   return "5-00-00";
}

//--><!]]>
</SCRIPT>
</HEAD>

<BODY>

<TABLE border=0>
<TR>
<TD>
<script type="text/javascript" language="JavaScript">
document.write(menu());
</SCRIPT>
</TD>
</TR>
</TABLE>

</BODY>
</HTML>

Автор: Ace Wentura 18.8.2005, 14:29
Насколько я понял, проблема была в следующем:
код:
Код

<script language="JavaScript" type="text/JavaScript" src="menus.js">
</script>

отвечает за подключение соответствущего файла со скриптами. Это можно делать где угодно (желательно в начале ХТМЛ-документа).
Для того, чтобы вызвать функцию необходимо в теле программы сделать следующее:
Код

<td><script language="JavaScript" type="text/JavaScript">
menu1();
</script></td>

В твоём же исполнении выполнено одновременно подключение функции и вызов её. Возможно, что в связи с этим и была проблема. А если ты пытался вызвать одну и ту же функцию таким образом в теле документа дважды - то наверняка получал ошибки в связи с дублированием функции.

Автор: Sardar 18.8.2005, 15:45
Цитата(Ivachenko @ 18.8.2005, 11:54)
Получается, что если в теге <script> указан "src=...", то все что идет за этим тегом далее (до закрывающего </script>) не поспринимается?

Да, указав src, содержимое тега <script> игнорируеться.

Автор: Ivanchenko Anton 19.8.2005, 07:23
Все понял.
Получается, что правильно будет сначала в <head></head> делать <sript ... src=...></script>, а уже потом в теле html-страницы вызвать <sript ... >[нужная функция]</script>, и пойдет обращение к нужной функции, находящийся во внешнем js-файле.
Спасибо.

Автор: Aliance 19.8.2005, 14:51
Угу, собственно как я и http://forum.vingrad.ru/index.php?showtopic=61759&view=findpost&p=495609.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)