3

我希望从 HTML 页面调用 javascript 函数,并且我希望它依赖于任何事件。该函数位于一个单独的 .js 文件中,因为我希望从许多网页中使用它。我也将变量传递给它。我试过这个:

HTML:

<script type="text/javascript" src="fp_footer2.js">
footerFunction(1_basic_web_page_with_links, 1bwpwl.html);
</script>    

fp_footer2.js 中的函数:

function footerFunction(path, file) {

document.write("<a href=" + path + "/" + file + " target='_blank'>Link to the original web page for this assignment.</a>");

return;
}

(我也尝试将 fp_footer2.js 文件引用放在标题中,但无济于事。我不确定是否可以像在此示例中那样将其“内联”。如果不能,请告诉我。

PS:我知道我可以在 HTML 本身中使用一个简单的 'a href=""' 来做到这一点。为了我自己的好奇心,我想看看这是否可行。

4

4 回答 4

7

如果 a<script>有 a src,则外部脚本将替换内联脚本。

您需要使用两个脚本元素。

您传递给函数的字符串也需要是实际字符串,而不是未定义的变量(或未定义变量的属性)。必须引用字符串文字。

<script src="fp_footer2.js"></script>
<script>
    footerFunction("1_basic_web_page_with_links", "1bwpwl.html");
</script>    
于 2012-11-05T17:29:34.053 回答
0

JavaScript 将您的页面呈现时运行。一个常见的错误是执行一个试图访问页面下方元素的脚本。这失败了,因为脚本运行时该元素不存在。

所以包含在<head>将在任何 DOM 内容可用之前运行。

如果您的脚本依赖于 DOM 元素的存在(例如页脚!),请尝试将脚本包含DOM 元素之后。更好的解决方案是使用document ready事件($(document).ready()在 jQuery 中)。或window.onload

documen ready和之间的区别在于window onloaddocument ready会在 DOM 被渲染时触发;因此所有初始 DOM 元素都将可用。在window onload所有资源加载后触发,如图像。window onload如果您正在处理这些图像,这很有用。通常document ready是正确的。

于 2012-11-05T17:28:29.707 回答
0

也许我误解了你的问题,但你应该能够做这样的事情:

<script type="text/javascript" src="fp_footer2.js"></script>
<script type="text/javascript">
   footerFunction(1_basic_web_page_with_links, 1bwpwl.html);
</script>
于 2012-11-05T17:29:04.453 回答
-1

您是否尝试过从 document.ready 调用它?

<script type="text/javascript">
  $(document).ready(function() {
    footerFunction(1_basic_web_page_with_links, 1bwpwl.html);
  });
</script> 
于 2012-11-05T17:29:39.647 回答