有几种方法可以使用 HTML/DOM 处理事件。没有真正正确或错误的方式,但不同的方式在不同的情况下是有用的。
1:在 HTML 中定义了它:
<input id="clickMe" type="button" value="clickme" onclick="doFunction();" />
2:在Javascript中将其添加到事件的DOM属性中:
//- Using a function pointer:
document.getElementById("clickMe").onclick = doFunction;
//- Using an anonymous function:
document.getElementById("clickMe").onclick = function () { alert('hello!'); };
3:使用Javascript将函数附加到事件处理程序:
var el = document.getElementById("clickMe");
if (el.addEventListener)
el.addEventListener("click", doFunction, false);
else if (el.attachEvent)
el.attachEvent('onclick', doFunction);
第二种和第三种方法都允许内联/匿名函数,并且都必须在从文档中解析元素后声明。第一种方法不是有效的 XHTML,因为 onclick 属性不在 XHTML 规范中。
第一个和第二个方法是互斥的,这意味着使用一个(第二个)将覆盖另一个(第一个)。第 3 种方法将允许您将任意数量的函数附加到同一个事件处理程序,即使也使用了第一种或第二种方法。
很可能,问题出在您的CapacityChart()
函数中。访问您的链接并运行您的脚本后,CapacityChart() 函数将运行并打开两个弹出窗口(一个根据脚本关闭)。你有以下几行:
CapacityWindow.document.write(s);
请尝试以下操作:
CapacityWindow.document.open("text/html");
CapacityWindow.document.write(s);
CapacityWindow.document.close();
编辑
当我看到你的代码时,我以为你是专门为 IE 编写的。正如其他人所说,你将需要更换引用document.all
同document.getElementById
。但是,在此之后您仍然有修复脚本的任务,因此我建议至少首先让它在 IE 中工作,因为您更改代码以跨浏览器工作的任何错误都可能导致更多混乱。一旦它在 IE 中工作,当您更新代码时,更容易判断它是否在其他浏览器中工作。