Sebagai programmer Java dalam enam bulan terakhir, kode JavaScript yang saya tulis hampir lebih dari sekadar kode Java. Beberapa waktu yang lalu, saya membangun sistem manajemen dan kontrol teller untuk bank. Dalam fungsi otorisasi teller, berbagai faktor perlu dipertimbangkan, seperti otoritas organisasi, otoritas tipe teller, otoritas kerja, otoritas bisnis, dll., Dan otoritas ini harus berpotongan atau berserikat, dan banyak javascript harus digunakan pada halaman untuk mengendalikannya. Ini telah menyebabkan kode JavaScript lebih bertanggung jawab atas implementasi modul fungsional ini daripada kode Java.
Sekarang, sistem manajemen kotak yang aman dikembangkan untuk bank. Its core functional blocks, safe box seat management and safe box management, in order to realize the management functions as intuitive and convenient as the C/S architecture, and display the processing results to the operator in real time, after several days of thinking and experimentation, finally, CSS+javaScript+java is used to develop, Java is used to process business logic, CSS is used to express various states of the target object, and JavaScript is used to realize the Mengalihkan CSS sesuai dengan transisi keadaan objek target.
Masalah yang dihadapi dalam hal ini adalah bahwa ketika mendaftarkan penangan acara klik untuk elemen HTML di JavaScript, misalnya, meneruskan 3 parameter ke pawang. Namun, tidak masalah menggunakan metode berikut (simpul berarti simpul untuk mendaftarkan acara, dan kesenangan adalah fungsi penanganan acara), ia tidak dapat meneruskan parameter ke fungsi penanganan acara:
node.addeventListener ('klik', fun, false); node.attachevent ('onClick', fun); node ['onClick'] = funJelas, metode ini tidak bagus, jadi harap dicatat bahwa metode penulisan salah:
node.addeventListener ('klik', fun (arg1, arg2, arg3), false); node.attachevent ('onClick', fun (arg1, arg2, arg3)); Node ['onClick'] = fun (arg1, arg2, arg3)Untungnya, saya membaca sebuah buku berjudul "JavaScript.Dom Advanced Programming" dan menemukan solusi dalam buku ini. Pertama tulis metode:
fungsi bindfunction (obj, func) {var args = []; untuk (var i = 2; i <arguments.length; i ++) {args.push (argumen [i]);} return function () {func.Apply (obj, args);}; };Kemudian tambahkan dua metode berikut ke perpustakaan JS Anda. Jika Anda tidak mengerti, Anda dapat merujuk ke "JavaScript.DOM Desain Pemrograman Lanjutan". Bagian 2.3 dari buku ini berisi penjelasan tentang metode ini, tetapi saya telah menambahkan beberapa perubahan:
fungsi bindfunction (obj, func) {var args = []; untuk (var i = 2; i <arguments.length; i ++) {args.push (argumen [i]);} return function () {func.Apply (obj, args);};}; window ['oyf_mark'] ['bindfunction'] = bindfunction; fungsi addEvent (node, ketik, pendengar) {// Gunakan metode sebelumnya untuk memeriksa kompatibilitas untuk memastikan degradasi halus if (! isCompatible ()) {return false} if (! (node = $ (node))) return false; if (node.addeventListener) {// metode w3c (peristiwa gelembung, jika false diubah menjadi true, itu adalah peristiwa penangkapan) node.addeventListener (ketik, pendengar, false); return true;} elseif (node.attachevent) {// msie metode node ['e' + type + listener] = listener; node [type + listener] = function () {node ['e' + type + listener] (window.event);} node.attachevent ('on' on ' + type [node [window.event); Kembali Benar; } // Jika tidak ada metode yang tersedia, return false return false;}; window ['oyf_mark'] ['addEvent'] = addEvent;Dua fungsi di atas sedikit dimodifikasi dari kode sumber di "JavaScript.dom Advanced Programming" dan ditambahkan ke salah satu perpustakaan JS saya sendiri untuk digunakan kembali. Selanjutnya, Anda dapat mendaftarkan acara ke elemen dan meneruskan parameter ke fungsi event handler dengan cara berikut:
// Daftarkan fungsi OnClick Event Handler baru oyf_mark.addevent (E, 'klik', oyf_mark.bindfunction (E, getContainerdetail, x, y, containid));