지난 6 개월 동안 Java 프로그래머로서 내가 쓴 JavaScript 코드는 Java 코드 이상입니다. 얼마 전, 나는 은행을위한 텔러 관리 및 제어 시스템을 구축했습니다. 텔러 승인의 기능에서 조직 당국, 텔러 유형 기관, 직무 당국, 사업 당국 등과 같은 다양한 요소를 고려해야하며, 이러한 권한은 교차 또는 노동 조합이어야하며, 많은 JavaScript를 사용하여이를 통제해야합니다. 이로 인해 Java Script 코드가 Java 코드 보다이 기능 모듈의 구현에 더 많은 책임이 있습니다.
이제 은행을 위해 안전한 상자 관리 시스템이 개발되었습니다. 핵심 기능 블록, 안전한 상자 좌석 관리 및 안전한 상자 관리는 C/S 아키텍처와 같은 직관적이고 편리한 관리 기능을 실현하고 며칠간의 사고와 실험을 한 후 운영자에게 처리 결과를 실시간으로 표시하기 위해, CSS+JavaScript+Java는 개발에 사용되며, Java는 비즈니스 논리를 사용하는 데 사용됩니다. 대상 객체의 상태 전환에 따라 CSS의 전환.
이 문제는 JavaScript에서 HTML 요소에 대한 클릭 이벤트 핸들러를 등록 할 때 3 개의 매개 변수를 핸들러에 전달한다는 것입니다. 그러나 다음 방법을 사용하더라도 (노드는 이벤트를 등록하기위한 노드를 의미하고 재미있는 이벤트 처리 기능) 이벤트 처리 기능에 매개 변수를 전달할 수는 없습니다.
node.addeventListener ( 'Click', fun, false); node.attachevent ( 'onclick', fun); 노드 [ 'onclick'] = fun
분명히이 방법이 좋지 않으므로 쓰기 방법이 잘못되었습니다.
node.addeventListener ( 'Click', fun (arg1, arg2, arg3), false); node.attachevent ( 'onclick', fun (arg1, arg2, arg3)); 노드 [ 'onclick'] = fun (arg1, arg2, arg3)
다행히도 나는 "JavaScript.dom Advanced Programming"이라는 책을 읽고이 책에서 해결책을 찾았습니다. 먼저 메소드 작성 :
함수 bindfunction (obj, func) {var args = []; for (var i = 2; i <arguments.length; i ++) {args.push (arguments [i]);} return function () {func.apply (obj, args);}; };그런 다음 JS 라이브러리에 다음 두 가지 방법을 추가하십시오. 이해하지 못하면 "JavaScript.dom Advanced Programming Design"을 참조하십시오. 이 책의 2.3 섹션에는이 방법에 대한 설명이 포함되어 있지만 몇 가지 변경 사항을 추가했습니다.
함수 bindfunction (obj, func) {var args = []; for (var i = 2; i <arguments.length; i ++) {args.push (arguments [i]);} return function () {func.apply (obj, args);};}; 창 [ 'oyf_mark'] [ 'bindfunction'] = bindfunction; function addevent (노드, 유형, 리스너) {// 이전 메소드를 사용하여 호환성을 확인하여 (! iscompatible ()) {return false} if (! (node = $ (node))) return false; if (node.adeventListener) {// w3c 메소드 (거품 이벤트, false가 true로 변경되면 캡처 이벤트입니다) node.addeventListener (유형, 청취자, false); return true;} elseif (node.attachevent) {// msie 메소드 노드 [ 'e' + type + listener] = listener; node [type + listener] = function () {node [ 'e' + type + lister] (window.event);} node.attachevent ( 'on' + type, node + lister]); 진실을 반환하십시오. } // 아무 방법이 없으면 사용 가능한 경우 false return false;}; Window [ 'Oyf_mark'] [ 'addevent'] = addevent;위의 두 기능은 "JavaScript.dom Advanced Programming"의 소스 코드에서 약간 수정되었으며 재사용을 위해 JS 라이브러리 중 하나에 추가되었습니다. 다음으로 요소에 이벤트를 등록하고 매개 변수를 다음과 같은 방식으로 이벤트 핸들러 기능으로 전달할 수 있습니다.
// 새 OnClick 이벤트 핸들러 기능 OYF_MARK.ADDEVENT (e, 'click', ooyf_mark.bindfunction (e, getContainerDetail, x, y, containId);