问题:
    网页上显示表情,在多个地方。类的构造方法:
function GXFaceBox(faceContener/*表情容器*/,inputId/*显示的目标对象*/){
this.faceTxt = ["[微笑]","[调皮]","[憨笑]","[坏笑]","[可爱]","[阴险]","[偷笑]","[呲牙]","[玫瑰]","[凋谢]","[难过]","[发呆]","[冷汗]","[发狂]","[吐]","[闭嘴]","[疑问]","[擦汗]","[强]","[弱]","[撇嘴]","[色]","[鄙视]","[嘘]","[白眼]","[亲亲]","[OK]","[握手]","[胜利]","[抱拳]"]; 
this.faceID = 0;
var str = "<div  class='mood_list' >";
    var i =0;
    var rNum = 0;
    var left=3;
    var top = 3; 
    for(var i=0;i<30;i++){
     if(i%10 ==0 && i>0){
     left = 3;
     top += 30;
     } 
     //str = str + '<div id="faceDiv_'+i+'"  style="float:left;width: 29px;height: 30px;background: url(\'/common/StateBar/images/tiFace.gif\') no-repeat scroll -'+left+'px -'+top+'px transparent;"></div>';    
   str = str + '<a id="faceDiv_'+i+'" title="'+this.faceTxt[i]+'" class="mood_sp" onmousedown="event.cancelBubble=true;" style="BACKGROUND-POSITION:-'+left+'px -'+top+'px ;"></a>';    
  
   left = left + 29;
    }   
     //onmouseover="this.style.border=\'1px red solid\'" onmouseout="this.style.border=\'\'" title="'+faceTxt[i]+'" 
    str = str + "</div>";
  this.faceParent=document.createElement("div");
  this.faceParent.id=faceContener;
  this.faceParent.style.display="none"; 
  this.faceParent.style.height="0px"; 
  this.faceParent.innerHTML = str;  
    this.faceParent.style.zIndex =10000;
this.inputContainer  = $(inputId); 

// faceBox.lastChild.style.background="url(/common/StateBar/images/bxFaceSel.gif) no-repeat 0 -70px";

var parentEl = this.inputContainer.parentNode;  
if(parentEl.lastChild == this.inputContainer){
 parentEl.appendChild(this.faceParent);
}else{ 
 parentEl.insertBefore(this.faceParent,this.inputContainer.nextSibling);
}                
this.faceBox = $(faceContener); 
thisObj = this;
       for(var i=0;i<30;i++){ 
   $("faceDiv_" + i).onmousedown = function(e){  
     e = e||event;
e.cancelBubble=true;
    thisObj.boxmousedown(this);
   };
   }
    //this.faceBox.attachEvent("onmousedown",function(e){ thisObj.boxmousedown(e);  });
// this.faceBox.firstChild.attachEvent("onmousemove",function(e){thisObj.boxmousemove(e);});  
//全局容器中加一
//   

这个是构造方法,不希望换,因为很多地方用到。如何实现.
首先我想到的是在show方法中可以修改目标对象。高人指点

解决方案 »

  1.   

    这个是构造方法,不希望换,因为很多地方用到。如何实现.   ---- 不希望换,可是你要实现什么呢?
    首先我想到的是在show方法中可以修改目标对象。高人指点。  ---- show方法?是你自己另外写的一个函数吗?这是要修改什么目标对象呢?这些问题你得说清楚啊,要不,谁知道你这是要做啥呢?
      

  2.   

    看不懂你想表达什么,也没有看到show方法既然是在多个地方要用的控件,生成的html要使用随机id,你这样使用固定id是不行的,会重复
      

  3.   

    GXFaceBox.prototype.showFace = function(e){   
    if(this.faceBox.style.display=="block"){
    this.clearBxPop(this.faceBox);
    return;
    }
    this.faceBox.style.display="block";  
    var x=findPosX(this.inputContainer);;
    var y=findPosY(this.inputContainer);  
    }

    //指定目标对象
    GXFaceBox.prototype.showFace2EditObj = function(inputId){   
    this.inputContainer  = $(inputId);
    var parentEl = this.inputContainer.parentNode;  
    if(parentEl.lastChild == this.inputContainer){
     parentEl.appendChild(this.faceParent);
    }else{ 
     parentEl.insertBefore(this.faceParent,this.inputContainer.nextSibling);

    this.showFace();


    上面程序是我的解决方案,有两个show*方法,showFace是从构造方法中得到inputContainer(先前的代码),showFace2EditObj 是改变inputContainer后再显示(修改后的代码)。程序中只需定义一个对象就可以了。先前的程序需要定义多个,而且会出现操作上一下,在另一个显示内容的情况。
      

  4.   

    简单ubb