以下是问题脚本:
这是来自HTML文件:
<script type="text/javascript">
var devices_record = "some string";
</script>
<script type="text/javascript" src="/js/foo.js"></script>
这是来自foo.js:
function bar () {
devices_record = "assign new string";
}
HttpFox的错误报告是未定义devices_ record。是什么赋予了?我认为devices_ record将是一个全局范围的变量,因此它应该可以从任何地方访问。
答案 0 :(得分:3)
您的测试用例适合我。这是我的完整测试:
foo.js:
function bar () {
alert(devices_record);
devices_record = "assign new string";
alert(devices_record);
}
foo.html:
<html>
<head>
<script type="text/javascript">
var devices_record = "some string";
</script>
<script type="text/javascript" src="foo.js"></script>
</head>
<body onload="bar()">
</body>
我收到两个提醒,第一个显示"some string"
,第二个显示"assign new string"
。
您的问题存在于代码的其他位置。
答案 1 :(得分:1)
我相信你给出的代码有效。至少执行上面给出的代码不会导致任何错误。
此外,在使用任何内联js之前,最好包含foo.js之类的依赖项。这样可以确保在调用库提供的函数之前加载库。
此外,赋值运算符不会导致'devices_ record not defined'错误,因为您正在使用赋值运算符定义它。
您的错误可能是由其他原因造成的。
答案 2 :(得分:0)
在 foo.js 中声明 devices_record 。然后,从HTML中嵌入的javascript中引用它。
您还可以考虑将 foo.js 代码封装在一个类中,并使用 devices_record 作为字段/属性。除其他外,这可以使错误捕获更加容易。
Tidbit:另外,如果在包含脚本之前放置了devices_record声明,则脚本可能能够访问它。但是,要小心在使用它们的文件之外声明变量。如果您决定将该脚本包含在忘记声明devices_record的页面中,则会遇到错误。