我对 SVG 相当陌生,这是我第一次使用 javascript 尝试 svg。我正在尝试使用 Raphael SVG 创建一组图表。为了创建这些图表,我需要动态创建一个 SVG 元素。这里的问题是创建图表的 javascript 函数是从输入图表数据输入的 html 页面访问的。所以为了访问函数 (Charts();) 我没有添加 onload 函数。因此,Raphael svg 没有被创建,因为它需要一个创建它的 DOM 元素。我该如何解决这个问题?
Charts.js 如下:
var Charts = function Charts(config){
var chart = this;
chart.defaults = {
.....
};
chart.Line = function(series, dataline){
var newconfig = (config) ? mergeConfig(chart.defaults, config) : chart.defaults;
return new KzSc(createSVG(newconfig, series, 'line'), newconfig, { series : series, name : 'line', dataline : dataline});
}
function createSVG(config, series, name){
//create svg
var chart_wrapper = document.getElementById(config.wrapperId);
chart_wrapper.style.position = "relative";
var SVGpaper = new Raphael(320, 200);
chart_wrapper.appendChild(SVGpaper);
var createSVGContainer = document.createElement("div");
createSVGContainer.setAttribute('id',config.containerId);
chart_wrapper.appendChild(createSVGContainer);
}}
这会在 rapahel 脚本中给出错误“无法读取 'x' 的属性”。
html 部分包含调用该函数的脚本。
<html>
<head>
<script src="charts.js"></script>
<script>
var = (describe data for charts)
new Charts(....);
</script>
</head>
<body>
<div id="containerforsvg"></div>
</body>
</html>
另外,如果我添加一个 onload 或 ready 函数,即;
$(document).ready(function() {
var Charts = ...
)}
然后它给出了错误 Uncaught ReferenceError: Charts is not defined