DOM-1 모범 사례 준수
                                            
 5912 단어  모범 사례
                    
네임스페이스 재사용을 위한 계획
    (function() {
      function $(id) {
        return document.getElementById(id);
      }
      function alertNodeName(id) {
        alert($(id).nodeName);
      }
      window.myNamespace = {};
      window.myNamespace.showNodeName = alertNodeName;
    })();myNamespace.showNodeName(test)  재사용 가능한 객체 이벤트 단순화
(function() {
    !window.A && (window['A'] = {});
    function $() {
      var elements = [], len = arguments.length;
      for(var i = 0; i < len; i++) {
        var element = arguments[i];
        if(typeof element === 'string') {
            element = document.getElementById(element);
        }
        if(len === 1) {
            return element;
        } else {
            elements.push(element);
        }
      } 
      return elements;   
    };
    // 
    A.isCompatible = function(other) {
      if(other === false || !Array.prototype.push || !Object.hasOwnProperty 
        || !document.createElement || !document.getElementsByTagName) {
        return false;
      }
      return true;
    };
    A.$ = $;
    A.addEvent = function(node, type, listener) {
      if(!(node = $(node))) return false;
      if(node.addEventListener) {
        node.addEventListener(type, listener, false);
        return true;
      } else if(node.attachEvent) {
        node.attachEvent('on' + type, listener);
        return true;
      }
      return false;
    };
    A.removeEvent = function(node, type, listener) {
      if(!(node = $(node))) return false;
      if(node.removeEventListener) {
        node.removeEventListener(type, listener, false);
        return true;
      } else if(node.attachEvent) {
        node.detachEvent('on' + type, listener);
        return true;
      }
      return false;
    };
    A.getByClass = function(className, tag, parent) {
      parent = parent || document;
      tag = tag || '*';
      if(!(parent = $(parent))) return false;
      var allTags = (tag === '*' && parent.all) ? parent.all : parent.getElementsByTagName(tag);
      var matchingElements = [];
      className = className.replace(/\-/g, '\\-');
      var regex = new RegExp('(^|\\s)' + className + '(\\s|$)');
      var element;
      for(var i = 0, len = allTags.length; i < len; i++) {
        element = allTags[i];
        if(regex.test(element.className)) {
            matchingElements.push(element);
        }
      }
      return matchingElements;
    };
    A.toggleDisplay = function(node, value) {
      if(!(node = $(node))) return false;
      var display = node.style.display;
      node.style.display = (display === 'none') ? (value || '') : 'none';
      return true;
    };
    A.insertAfter = function(changeNode, referenceNode) {
      if(!(changeNode = $(changeNode))) return false;
      if(!(referenceNode = $(referenceNode))) return false;
      return referenceNode.parentNode.insertBefore(changeNode, referenceNode.nextSibling);
    };
    A.removeChild = function(parent) {
      if(!(parent = $(parent))) return false;
      while(parent.firstChild) {
        parent.firstChild.parentNode.removeChild(parent.firstChild);
      }
      return parent;
    };
    A.prependChild = function(parent, newChild) {
      if(!(parent = $(parent))) return false;
      if(!(newChld = $(newChld))) return false;
      if(parent.firstChild) {
        parent.insertBefore(newChild, parent.firstChild);
      } else {
        parent.appendChild(newChild);
      }
      return parent;
    };
    A.create = function(tag, html) {
      if(!tag) return false;  
      html = html || '';
      var node = document.createElement(tag);
      node.innerHTML = html;
      return node; 
    };
  })();javascript에서 흔히 볼 수 있는 함정
function initAnchor() {
    for(var i = 0; i < 3; i++) {
      A.addEvent('anchor' + i, 'click', function() {
        alert('My id is anchor' + i);
      });
    }
  }
  A.addEvent(window, 'load', initAnchor);상기에서 클릭 이벤트 감청기가 호출되었을 때 내부 작용역에서 i를 찾지 못했습니다.외부 역할 영역에서 찾기;외부 i의 값은 3이기 때문에 이런 문제는 정의된 후 바로 실행되지 않는 사건에서 자주 발생한다
  function initAnchor() {
    for(var i = 0; i < 3; i++) {
      registerListener(i);
    }
  }
  function registerListener(i) {
    A.addEvent('anchor' + i, 'click', function() {
      alert('My id is anchor' + i);
    });
  }
  A.addEvent(window, 'load', initAnchor);상기에서 클릭의 감청기의 외부 환경은registerListener 함수로 변했다. 이 함수는 모든 실례(이 함수를 호출할 때마다 정확한 변수 작용역을 유지하기 위해 이 함수의 사본을 생성한다)의 내부 작용역에서 i
function initAnchor() {
    for(var i = 0; i < 3; i++) {
      (function() {
        A.addEvent('anchor' + i, 'click', function() {
          alert('My id is anchor' + i);
        });
      })(i);
    }
  }
function initAnchor() {
    for(var i = 0; i < 3; i++) {
      (function(i) {
        A.addEvent('anchor' + i, 'click', function() {
          alert('My id is anchor' + i);
        });
      })(i);
    }
  }그래서 상례에서 두 번째 예는 익명 함수에서 흔히 볼 수 있는 모든 실례가 i를 유지합니다.첫 번째는 여전히 외부의 i를 찾습니다.
if(!all.hasOwnProperty(i)) continue;   이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
DOM-1 모범 사례 준수네임스페이스 재사용을 위한 계획 myNamespace.showNodeName(test) 재사용 가능한 객체 이벤트 단순화 javascript에서 흔히 볼 수 있는 함정 대소문자를 구분한다 싱글 따옴표와 더블 따옴표 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.