Ada beberapa cara untuk menangani acara dengan HTML / DOM. Tidak ada cara yang benar atau salah, tetapi cara yang berbeda berguna dalam situasi yang berbeda.
1: Ada yang mendefinisikannya dalam HTML:
<input id="clickMe" type="button" value="clickme" onclick="doFunction();" />
2: Ada yang menambahkannya ke properti DOM untuk acara di Javascript:
//- Using a function pointer:
document.getElementById("clickMe").onclick = doFunction;
//- Using an anonymous function:
document.getElementById("clickMe").onclick = function () { alert('hello!'); };
3: Dan ada melampirkan fungsi ke pengendali acara menggunakan Javascript:
var el = document.getElementById("clickMe");
if (el.addEventListener)
el.addEventListener("click", doFunction, false);
else if (el.attachEvent)
el.attachEvent('onclick', doFunction);
Metode kedua dan ketiga memungkinkan untuk fungsi inline / anonim dan keduanya harus dideklarasikan setelah elemen diuraikan dari dokumen. Metode pertama tidak XHTML yang valid karena atribut onclick tidak dalam spesifikasi XHTML.
Metode ke-1 dan ke-2 saling eksklusif, artinya menggunakan satu (ke-2) akan menimpa yang lain (ke-1). Metode ke-3 akan memungkinkan Anda untuk melampirkan fungsi sebanyak yang Anda suka ke pengendali event yang sama, bahkan jika metode 1 atau 2 telah digunakan juga.
Kemungkinan besar, masalahnya terletak di suatu tempat di CapacityChart()fungsi Anda . Setelah mengunjungi tautan Anda dan menjalankan skrip Anda, fungsi CapacityChart () berjalan dan dua popup dibuka (satu ditutup sesuai skrip). Di mana Anda memiliki baris berikut:
CapacityWindow.document.write(s);
Coba yang berikut ini sebagai gantinya:
CapacityWindow.document.open("text/html");
CapacityWindow.document.write(s);
CapacityWindow.document.close();
EDIT
Ketika saya melihat kode Anda, saya pikir Anda menulisnya khusus untuk IE. Seperti yang telah disebutkan orang lain, Anda perlu mengganti referensi document.alldengan document.getElementById. Namun, Anda masih akan memiliki tugas untuk memperbaiki skrip setelah ini sehingga saya akan merekomendasikan membuatnya bekerja di setidaknya IE terlebih dahulu karena setiap kesalahan yang Anda buat mengubah kode untuk bekerja lintas browser dapat menyebabkan lebih banyak kebingungan. Setelah berfungsi di IE, akan lebih mudah untuk mengetahui apakah itu berfungsi di browser lain saat Anda memperbarui kode.