函数'未定义'当它是
Function 'is not defined' when it is
我在Inkscape中绘制了一张地图,将其保存为SVG并使用http://readysetraphael.com/将其转换为拉斐尔。我将生成的代码放入一个名为drawMap
的函数中,并将其保存在js/map.js 中
js/map.js:
function drawMap(){
var map = Raphael('map', '100mm', '100mm');
var layer4 = map.set();
var path3041 = map.path("m 106.15571,153.07817 -1.64315,13.74999 4.60661,10.36488 6.04618,9.21323 9.21323,3.16705 6.04618,6.04618 8.34949,8.06157 77.4487,1.72748 3.45496,-48.79108 z");
path3041.attr({id: 'path3041',parent: 'layer4',opacity: '0.98999999',fill: '#ffb380',stroke: '#000000',"stroke-width": '3',"stroke-linecap": 'butt',"stroke-linejoin": 'miter',"stroke-miterlimit": '4',"stroke-opacity": '1',"stroke-dasharray": 'none'}).data('id', 'path3041');
layer4.attr({'id': 'layer4','name': 'layer4'});
//etc, more lines than stackoverflow will let me add
var mapGroups = [layer4,layer5,layer19,layer20,layer21,layer22,layer23,layer24,layer25,layer26,layer6,layer7,layer8,layer9,layer10,layer1,layer3,layer11,layer12,layer13,layer14,layer15,layer16,layer17,layer18,layer27,layer28,layer29,layer30,layer31,layer32,layer33,layer34,layer35,layer36,layer37,layer38,layer39,layer40,layer41,layer42,layer43,layer44,layer45];
}
然后,我将raphael-min.js
放入"js"文件夹中。
当我打电话给drawMap()
时,萤火虫说:
"drawMap未定义"
我在html文件中添加了map.js的内容,但我收到了错误"Raphaial未定义"。
我认为这是因为在加载raphial-min.js
之前调用了rapial,所以我在调用drawMap()
之前使用Modernizer加载了raphial-min.js
和map.ja
,但现在我得到了错误:
"drawMap未定义"
Index.html:
<!DOCTYPE html>
<html>
<head>
<title>Risk</title>
<script type="text/javascript" src="http://modernizr.com/downloads/modernizr.js"></script>
</head>
<body>
<div id="map">
<script type="text/javascript">
drawMap()
Modernizr.load({
load: 'js/raphael-min.js',
load: 'js/map.js',
complete: drawMap()
})
</script>
</div>
</body>
</html>
Modernizr实现的几个问题。
- 在
complete
属性中,您不应该调用drawMap
,而应该只是引用它,而且由于它还没有加载,您必须在匿名内联函数中引用它 - 在加载
drawMap()
之前,您不应该调用它 - 在Modernizr.load()语法中,javascript不允许在同一对象上使用多个
load
属性
所以这个:
drawMap();
Modernizr.load({
load: 'js/raphael-min.js',
load: 'js/map.js',
complete: drawMap()
})
应该是这样的:
Modernizr.load({
load: ['js/raphael-min.js', 'js/map.js'],
complete: function() {drawMap();}
})
另外,我不知道你为什么要动态加载这些。这可能没有必要。你可以这样做:
<script src="js/raphael-min.js"></script>
<script src="js/map.js"></script>
<script>
drawMap();
</script>
drawMap
在加载脚本文件之前被调用。
相关文章:
- Jquery未定义函数正在停止其他操作
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- Uncaught ReferenceError:尝试在Android网络视图中访问时未定义函数
- jQuery文件上传和验证未定义函数
- 引用错误:未定义函数-Firefox
- res.render中出错,未定义函数
- 神秘的未定义函数
- 尝试使用函数和Ajax修改值时未定义函数
- 引用错误:未定义函数
- ReferenceError:未定义函数
- 在 Angular JS 中使用 ng-include 的未定义函数
- 未捕获的引用错误:未定义函数
- j查询工具提示引发错误:未定义函数
- 未捕获的引用错误: 未定义单击世界 -- 未定义函数
- JS:引用错误:未定义函数
- 茉莉花未定义函数
- Javascript 错误:未捕获的引用错误:未定义 [函数]
- 未定义函数
- 尽管 js 文件引用在标头中,但未定义函数
- Javascript 未定义函数错误