gpt4 book ai didi

javascript - 从另一个 JS 文件访问对象时未捕获的 ReferenceError

转载 作者:行者123 更新时间:2023-11-30 18:47:46 24 4
gpt4 key购买 nike

我的 Web 应用程序中有各种 JS 库,它们在我的主 JS 文件 (main.js) 之前加载。这些库之一是 jshashtable ,但是当我尝试在 main.js 中创建一个新的 Hashtable 对象时,Google Chrome 和 Firefox 抛出 ReferenceError,提示该变量不存在。

这是应用程序的:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="/static/jquery-1.4.4.min.js"></script>
<script type="text/javacsript" src="/static/jshashtable-2.1.js"></script>
<script type="text/javascript" src="/static/main.js"></script>

这是 main.js 中的问题行:

posts = new Hashtable();

此行位于名为 init 的函数内,该函数在页面完成加载时调用(使用 jquery $(document).ready() 函数)。

Hashtable 不是全局的有什么原因吗? Google map 和 jquery 对象没有这样的问题。 jshashtable 源码见Google code .

最佳答案

更新后的答案:问题是您在 script 标签中有错别字:

<script type="text/javacsript" src="/static/jshashtable-2.1.js"></script>
<!-- ^^---- here (the letters are transposed) -->

我不明白为什么您会遇到问题,因此决定实际复制并粘贴您的脚本标签并在我的机器上准确地复制结构。一切都停止了,我的世界逆时针倾斜了 3°,直到我最终凝视它们足够长的时间才能看到它。

前提是 jshashtable 代码确实位于 /static/jshashtable-2.1.js 并且您的服务器正在正确提供它(在开发工具中仔细检查 Chrome 的资源选项卡) ,我看不出有任何理由。您的脚本顺序正确,jshashtable 的文档显示使用全局 Hashtable(您提供的代码链接清楚地表明它正在创建一个)。


编辑:我刚刚复制了相同的结构(相同的脚本,相同的顺序,使用 jQuery(document).ready(function() { ... });) 在我自己的服务器上,我没有遇到这个问题。我可以创建一个 Hashtable 并使用它的功能。

我的 HTML:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Test Page</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type='text/javascript' src='jquery-1.4.4.js'></script>
<script type='text/javascript' src='jshashtable-2.1.js'></script>
<script type='text/javascript' src='main.js'></script>
</head>
<body>
</body>
</html>

我的main.js:

jQuery(document).ready(function() {
try {
var ht = new Hashtable();
display("typeof ht = " + typeof ht);
display("ht.size() = " + ht.size());
}
catch (e) {
display("Exception: " + e);
}

function display(msg)
{
$("<p>").html(msg).appendTo(document.body);
}
});

唯一的区别是我没有使用 /static 前缀,而且我绝对确定这没有区别。

关于javascript - 从另一个 JS 文件访问对象时未捕获的 ReferenceError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4915900/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com