正在努力将Javascript类用作某些彗星代码的方法,我如何为此代码提供构造函数?以下代码无效:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<link rel="Stylesheet" href="gStyle.css" />
<script type="text/javascript" language="javascript">
// Gantt chart object
function ganttChart(gContainerID) {
this.isDebugMode = true;
this.gContainer = document.getElementById(gContainerID);
if (this.isDebugMode) {
this.gContainer.innerHTML += "<div id=\"gDebug\">5,5 | 5.1</div>";
}
}
var myChart = new ganttChart("chart1");
</script>
</head>
</html>
<body>
<div id="chart1" class="gContainer"></div>
</body>
</html>
this.gContainer为null
答案 0 :(得分:2)
这是因为您在页面准备好之前运行脚本,即chart1
在您致电new ganttChart("chart1");
时尚不存在。将代码包装在window.onload = function() { }
中或在页面底部运行。
答案 1 :(得分:2)
问题是你的脚本运行得太早了,它正在寻找一个在尚未中不存在的元素,要么运行你的脚本onload
,要么把它放在<body>
的结尾,以便您的id="chart1"
元素在运行时可以找到。
答案 2 :(得分:1)
问题是你在页面加载之前运行你的代码,因此在执行代码时,id chart1的DOM元素不存在。
使用
window.onload = function(){myChart = new ganttChart("chart1");};
答案 3 :(得分:1)
请注意,像这样使用window.onload将覆盖之前声明的所有window.onload声明。以下几行中的内容会更好:
<script type="text/javascript">
var prevOnload = window.onload || function () {};
window.onload = function () {
prevOnload();
// do your stuff here
};
</script>
此外,直到alload图像完全加载onload都不会触发,考虑使用jquery&amp; $(文件).ready或类似。
:)
此致 佩德罗