有几种方法可以用HTML/DOM处理事件。没有真正的正确或错误的方法,但是不同的方法在不同的情况下有用。
1:在HTML中定义它:
<input id="clickMe" type="button" value="clickme" onclick="doFunction();" />
2:有添加到DOM属性的事件在Javascript:
//- 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规范中。
第一个和第二个方法是互斥的,这意味着使用一个(第二个)将覆盖另一个(第一个)。第三种方法将允许您向同一个事件处理程序附加任意多的函数,即使也使用了第一种或第二种方法。
最有可能的是,问题在于您的CapacityChart()函数。访问链接并运行脚本后,运行CapacityChart()函数并打开两个弹出窗口(根据脚本关闭一个)。这里有这样一行:
CapacityWindow.document.write(s);
试试下面的方法吧:
CapacityWindow.document.open("text/html");
CapacityWindow.document.write(s);
CapacityWindow.document.close();
EDIT
When I saw your code I thought you were writing it specifically for IE. As others have mentioned you will need to replace references to document.all with document.getElementById. However, you will still have the task of fixing the script after this so I would recommend getting it working in at least IE first as any mistakes you make changing the code to work cross browser could cause even more confusion. Once it's working in IE it will be easier to tell if it's working in other browsers whilst you're updating the code.