有几种方法可以使用HTML / DOM处理事件。没有真正的对或错的方式,但不同的方式在不同的情况下是有用的。
1:在HTML中定义它:
2:将其添加到Javascript中的事件的DOM属性:
//- Using a function pointer:
document.getElementById("clickMe").onclick = doFunction;
//- Using and 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规范中。
第一和第二种方法是相互排斥的,意味着使用一个(第二)将覆盖另一个(第一)。第三种方法将允许您将尽可能多的函数附加到同一个事件处理程序,即使第一或第二方法也被使用。
很可能,问题出在您的CapacityChart()函数中。访问链接并运行脚本后,CapacityChart()函数运行,并打开两个弹出窗口(一个按照脚本关闭)。您有以下行:
CapacityWindow.document.write(s);
尝试以下代替:
CapacityWindow.document.open("text/html");
CapacityWindow.document.write(s);
CapacityWindow.document.close();
编辑当我看到你的代码,我以为你正在写它专门为IE。正如其他人所提到的,您将需要使用document.getElementById替换对document.all的引用。然而,你仍然有任务固定脚本之后,所以我建议让它工作在至少IE第一,因为任何错误,你改变代码工作跨浏览器可能会导致更多的混乱。一旦它在IE中工作,将更容易告诉它是否在其他浏览器工作,而你更新的代码。