JS 가 쓴 HTML 해석, 텍스트 내용 가 져 오기

이 함 수 는 어떤 Element 의 innerHTML 을 해석 하여 텍스트 내용 을 가 져 오 는 데 사 용 됩 니 다.
function HtmlDecoder(){
	var converters=new Map();//     ,      Element       。   Map         ,   C#  Dictionary。
	this.RegisterConverter=function(tagName,conv){//     ,          
		if (converters.ContainsKey(tagName))
        {
			var index=converters.IndexOfKey(tagName);//        tagName    ,    
            converters.RemoveAt(index);
			if(conv)converters.Add(tagName,conv);
        }
        else
        {			
            if(conv)converters.Add(tagName,conv);
        }
	}
    this.Decode=function(self){return function(ele){//          
	    if(ele.style&&ele.style["display"]=="none")return "";//  Element       “”
	    var items=ParseElementChildren(ele);//  “     ”  ,  Element      
		var s="";
		if(!items||items.length<1){//            “tagName”    ,          
 			var conv=GetConverter(ele.tagName);
			s=conv(ele);
		}
		else{							//          
		    for(var i=0;i0){
								items[items.length]=html.substr(pos,index-pos);
								pos=index;
							}
							items[items.length]=ele.childNodes[i];
							pos+=outer.length;
						}
					}
					if(pos

위 코드 에 사 용 된 맵 함수:
function Map()
{
    var keys=[];
    var values=[];
    this.Count=0;
    var self=this;
    this.ContainsKey=function(key){
        return self.IndexOfKey(key)>-1;
    }
    this.ContainsValue=function(value){
        return self.IndexOfValue(value)>-1;
    }
    this.IndexOfKey=function(key){
        for(var i=0;iindex;i--){
            keys[i]=keys[i-1];
        }
        keys[index]=key;
        for(var i=values.length;i>index;i--){
            values[i]=values[i-1];
        }
        values[index]=value;
        self.Count++;
    }
    this.Add=function(key,value){
        self.Insert(self.Count,key,value);
    }
    this.RemoveAt=function(index){
        if(index<0||index>=self.Count)throw new Error("Index out of range");
        for(var i=index;i

전재 출처 를 밝 혀 주 십시오:http://blog.csdn.net/yueguangzhiyuan/article/details/17418701

좋은 웹페이지 즐겨찾기