在我的html代码中,我导入了一个外部js文件,并且还有我自己的内联js代码,在我自己的js代码中,我需要调用外部js文件中定义的对象的方法。渲染后,源代码如下所示:
<script type="text/javascript">
// content of the extenral js file
...
var bar = {};
bar.foo = {};
...
bar.foo.class = {};
bar.foo.class.method = function() {...};
...
</script>
<script type="text/javascript">
// content of my own javascript code
...
function load() {
...
bar.foo.class.method();
...
}
...
</script>
对于我正在使用的框架,我不能将这两个部分放在一个地方(即两者都在外部js文件中,或者两者都在我自己的内联js代码中)。现在,此代码适用于Firefox,Chrome和Safari,但不适用于IE。 IE调试器显示如下错误:“无法获取属性'foo'的值:对象为null或未定义”
看起来第一个标签中定义的bar.foo.class对第二个标签不可见,或者第二个标签在第一个标签之前执行(第一个标签全部是关于类定义,没有真正的工作流)。
有没有人知道如何在IE中解决这个问题?谢谢!
答案 0 :(得分:0)
尝试此代码..可能是可见性问题.....我认为它会起作用
<script type="text/javascript">
// content of the extenral js file
...
var bar = {};
bar.foo = {};
...
bar.foo.class = {};
bar.foo.class.method = function() {...};
...
</script>
<script type="text/javascript">
// content of my own javascript code
var _bar = bar;
...
function load() {
...
_bar.foo.class.method();
...
}
...
</script>
另一种选择..避免使用var关键字然后它将是全局的
<script type="text/javascript">
// content of the extenral js file
...
bar = {};
bar.foo = {};
...
bar.foo.class = {};
bar.foo.class.method = function() {...};
...
</script>
<script type="text/javascript">
// content of my own javascript code
...
function load() {
...
bar.foo.class.method();
...
}
...
</script>
答案 1 :(得分:0)
单词class
是保留字。使用klass
之类的其他内容或执行foo["class"]
之类的内容。