有几种方法可以使用 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 规范中。
第一种和第二种方法是互斥的,这意味着使用一种方法(第二种)将覆盖另一种方法(第一种)。第三种方法将允许您将任意数量的函数附加到同一个事件处理程序,即使也使用了第一种或第二种方法。
最有可能的是,问题出在你的某个地方CapacityChart()
功能。访问链接并运行脚本后,CapacityChart() 函数将运行并打开两个弹出窗口(其中一个根据脚本关闭)。如果您有以下行:
CapacityWindow.document.write(s);
请尝试以下方法:
CapacityWindow.document.open("text/html");
CapacityWindow.document.write(s);
CapacityWindow.document.close();
EDIT
当我看到你的代码时,我以为你是专门为 IE 编写的。正如其他人提到的,您需要替换对document.all
with document.getElementById
。但是,在此之后您仍然需要修复脚本,因此我建议至少首先在 IE 中运行它,因为更改代码以跨浏览器运行时所犯的任何错误可能会导致更多混乱。一旦它在 IE 中工作,在更新代码时就可以更容易地判断它是否在其他浏览器中工作。