这是我的演示代码:
<body onload="initialize()">
<script>
function initialize(){
var d='adddd'
$.getScript('other.js', function() {
a()
});
}
</script>
</body>
这是演示other.js:
function a(){
alert(d)
}
然后,你会发现一个错误:
d is not defined
所以你必须这样做:
function a(d){
alert(d)
}
和
a(d)
如果我们有很多变量,我们必须逐个添加它们,如下所示:
a(d,e,f,r,f,g,,h,e,w)
这是我的梦魇,所以如何加载另一个不用于添加它们的js文件,
接下来是我的原始代码:
<script type="text/javascript">
function initialize() {
var n=0;
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
$.getScript('_lib/node.js', function() {
console.log(node)
var a = new node($('#test'),true);
var b = new node($('#tabs_'));
});
}
</script>
node.js是:
function node(obj,is_add_class_name) {
this.n=0;
this.setMap(map);
this.obj=obj;
this.is_add_class_name=is_add_class_name;
var me=this;
$('.delete').click(function(){
if($('.delete',me.div_)[0]==this){
me.onRemove()
}
})
map.setOptions({
draggable:true
})
}
node.prototype = new google.maps.OverlayView();
node.prototype.onAdd = function() {
var div = $(this.obj)
div.show();
this.div_ = div[0];
this.addPolygon(new google.maps.LatLng(-34.397, 150.644));
var panes = this.getPanes();
panes.overlayLayer.appendChild(div[0]);
}
node.prototype.onRemove = function() {
this.div_.parentNode.removeChild(this.div_);
this.div_ = null;
}
但错误是:
map is not defined
node.js与主文档分离,现在我必须调用节点函数使用它:
var a = new node($('#test'),true,map,..other variables in main file );
这是非常复杂的,所以我的问题是如何简单地加载一个js文件,不要使用 发送js所需的每个变量。
感谢
答案 0 :(得分:0)
您似乎想要的是全局变量。这些通常是不受欢迎的,因为它们的使用可能会导致严重的问题。
在JavaScript中,如果在函数外部声明变量,则它们是全局变量,并且可由任何其他脚本访问。
所以你的示例代码是:
<body onload="initialize()">
<script>
var d='adddd';
function initialize(){
$.getScript('other.js', function() {
a()
});
}
</script>
</body>
我只是在函数外部移动了d的声明,以便任何其他脚本都可以引用它。
那为什么这被认为是不好的做法?好吧,如果你要组合来自不同来源的许多脚本,并且每个脚本声明它自己的全局变量,那么就无法确保它们不会互相踩踏。进一步的JavaScript有自己的全局变量,如果你跳过将导致很难找到错误。
如果你必须使用全局变量,那么给它们一个名称,表明它们在哪个脚本中被定义,例如:你的例子中的script1_d。这样你就可以确保全局变量具有唯一的名称,并且你知道你正在引用哪一个。