问题:
网页上显示表情,在多个地方。类的构造方法:
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方法中可以修改目标对象。高人指点
网页上显示表情,在多个地方。类的构造方法:
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方法中可以修改目标对象。高人指点
解决方案 »
- jquery和javascript代码混合使用时取不到变量的问题(续)变量作用域
- JSP页面中用javascript实现日期选择
- 求一JS正则验证 是否为 126或者163的邮箱地址
- 一个正则
- Safari浏览器下如何实现iframe高度自适应(IE,Firefox已实现)?
- 请问最后一句 b=('s'+a).offsetLeft 有什么错误?
- 如何在见面中实现大图片的鼠标拖动
- 拖动滚动条时候,图片也随着移动 ,如何实现??
- 怎么更改input的name属性?
- javascript中有类似php中var_dump的函数吗?
- javascript实现图片幻灯片功能,哪个插件好用,大家给推荐下!
- 在线等 !!!location.href 地址有 特殊字符 #怎么办
首先我想到的是在show方法中可以修改目标对象。高人指点。 ---- show方法?是你自己另外写的一个函数吗?这是要修改什么目标对象呢?这些问题你得说清楚啊,要不,谁知道你这是要做啥呢?
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后再显示(修改后的代码)。程序中只需定义一个对象就可以了。先前的程序需要定义多个,而且会出现操作上一下,在另一个显示内容的情况。