从脚本中调用.js文件中的函数

时间:2009-05-08 18:19:33

标签: javascript scripting

我在test.html中有这个:

<script>
    function h(){
       g();
    }
<script>

k.js:

g();

在test.html中,我成功输入了h(),但未成功输入g()。我添加了k.js作为脚本标记: scriptTag.src="k.js"

找不到g()就是一样。

我做错了什么?

6 个答案:

答案 0 :(得分:2)

你说k.js有这个:

g();

这不是一个有效的函数来调用,它只是试图调用仍未定义的g();

k.js应具备的内容是这样的:

function g() { alert('you called g()'); }

答案 1 :(得分:1)

听起来您正在尝试在文档加载时或事件触发时添加脚本。如果您尝试在包含它的外部文件添加到dom后立即调用函数,则会出现错误。外部文件将不会被下载。在这个过程中有潜在的。计算机循环通过客户端脚本比下载.js文件更快。设置超时,您应该看到它正常工作。我错了,但那是我的......

答案 2 :(得分:0)

您是否确保在调用h()之前加载了k.js?

是否成功找到k.js并且路径正确解析?

答案 3 :(得分:0)

确保您调用的函数在DOM中的位置高于调用它的行。

答案 4 :(得分:0)

  

我添加了k.js作为脚本标签[scriptTag.src =“k.js”]

听起来你是在动态编写脚本标签吗?如果是这样,请确保将其注入DOM,然后在尝试从中访问任何内容之前等待浏览器加载它。只是创建脚本节点,在将其注入某处之前不会做任何事情。

答案 5 :(得分:0)

你的代码看起来像这样吗?

var scriptTag = document.createElement('script');
scriptTag.src = 'k.js';

真的,你应该有这条​​线:

scriptTag.type = 'text/javascript';

如前所述,必须将脚本插入DOM。这两行应解决问题:

var head = document.getElementsByTagName('head')[0];
head.appendChild(scriptTag);

导致:

var scriptTag = document.createElement('script');
scriptTag.src = 'k.js';
scriptTag.type = 'text/javascript';

var head = document.getElementsByTagName('head')[0];
head.appendChild(scriptTag);

现在你为什么不用这个?

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