Існує кілька способів обробляти події за допомогою 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.
1-й і 2-й методи взаємно виключають, тобто використання одного (2-го) перекриє інший (1-го). Третій метод дозволить вам приєднати стільки функцій, скільки вам подобається, до одного і того ж обробника подій, навіть якщо 1-й або 2-й метод також використовувався.
Швидше за все, проблема лежить десь у вашій CapacityChart()
функції. Після відвідування вашого посилання та запуску сценарію функція CapacityChart () запускається, і відкриваються дві спливаючі вікна (одна закрита відповідно до сценарію). Де у вас такий рядок:
CapacityWindow.document.write(s);
Спробуйте замість цього:
CapacityWindow.document.open("text/html");
CapacityWindow.document.write(s);
CapacityWindow.document.close();
EDIT
Коли я побачив ваш код, я подумав, що ви пишете його спеціально для IE. Як уже згадувалося вам потрібно буде замінити посилання на document.all
з document.getElementById
. Однак після цього у вас залишиться завдання виправити скрипт, тому я б рекомендував спочатку його попрацювати принаймні в IE, оскільки будь-які помилки, які ви робите, змінюючи код на перехресний браузер, можуть викликати ще більше плутанини. Як тільки він працює в IE, вам буде простіше зрозуміти, чи працює він в інших браузерах, коли ви оновлюєте код.