全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

discuz表情的JS提取方法分析

本文实例讲述了discuz表情的JS提取方法。分享给大家供大家参考,具体如下:

discuz将应用的表情生成了一个js文件,在forumdata/cache/下,叫smilies_var.js,这个文件是根据后台数据库 生成的一个表情数组,里面有两个数组,一个是表情名称和所在目录的数组smilies_type,一个是表情图片名和代码的数组 smilies_array,这些都是更新缓存的时候自己读数据库生成的,所以后台的改动一样会改动到它。

论坛快速回复的表情是一个弹出层,虽然已经很不错,但仍然会增加用户的操作复杂度,因此需要将它移出来,放在边上,就向下图:

既然论坛已经将表情的数据以数组的形式放在了JS文件里,那要实现这个功能,其实就是一个操作数组的问题了,再上一些简单的翻页,换表情,点击表情 输出到文本框里就行了。那现在就在拆分一下,从图上就可以看出,表情部分一共分成了3块,1、表情种类(表情名称),2、表情列表,3、分页。

看看smilies_var.js里对表情种类的数组

var smilies_type = new Array();
smilies_type[6] = ['悠嘻猴', 'yxh'];
smilies_type[5] = ['免斯基', 'tsj'];
smilies_type[4] = ['蘑菇点', 'mgd'];
smilies_type[3] = ['呆呆男', 'grapeman'];

它其实就是一个2维数组,要像图上那样做,可以这样做:

<script type="text/javascript">
i=0;
for(var a in smilies_type){
  i++;
  for(var b in smilies_type[a]){
    if(b==0){
      if(i==1){
        document.write("<li class='fthis' onclick='ftab(this);loadsmilies("+a+",1,\"f\");'><a href='javascript:;'>"+smilies_type[a][0]+"</a></li>");
      }else{
        document.write("<li onclick='ftab(this);loadsmilies("+a+",1,\"f\");'><a href='javascript:;'>"+smilies_type[a][0]+"</a></li>");
      }
    }
  }
}
</script>

其中的ftab()和loadsmilies()函数都先可以不管,i这个变量是用来确认第一个表情类型的,好给表现层加上当前示意。

表情图片的数组处理方式其实和类型是一样,只是可能不只2维了,具体的处理程序如下:

<script type="text/javascript">
function loadsmilies (m,n,f) {
var restr='';
var restr='<div style="width:300px;height:170px;">';
for(var a in smilies_array[n]){
for(var b in smilies_array­[n][a]){
if(b==2){
restr=restr+"<img src='images/smilies/"+smilies_type­[1]+"/"+smilies_array­[n][a][b]+"' alt='' onclick='document.getElementById(\"fastpostmessage\").value=document.getElementById(\"fastpostmessage\").value+\""+smilies_array[n][a][1]+"\";' style='cursor:pointer;width:30px;height:30px;' /> ";
}
}
}
restr=restr+"</div><div class='fsmilies_page'>";
var mnum=smilies_array­.length;
for(var i=0;i<mnum-1;i++){
var j=i+1;
restr=restr+"<a href=\"javascript:;\" onclick=\"loadsmilies("+m+","+j+",'f');\">["+j+"]</a> ";
}
restr=restr+"</div>";
document.getElementById(f).innerHTML=restr;
}
</script>

这里面还包含了分页的处理,就是通过对数组求其长度来找到页数,然后循环输出,再调用loadsmilies()函数,传参,达到目的,每次点击都 往指定的<div>里输出,一切就OK了。初始化代码:<script type='text/javascript'>loadsmilies(6,1,'f');</script>,里面的第三个参数f 即为用于放表情的<div>ID。

程序很简单,不多讲。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript图片操作技巧大全》、《JavaScript切换特效与技巧总结》、《JavaScript图形绘制技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。


# discuz  # 表情  # JS  # 提取方法  # Discuz不使用插件实现简单的打赏功能  # Discuz论坛密码与密保加密规则  # discuz图片顺序混乱解决方案  # discuz目录文件资料汇总  # discuz论坛更换域名  # 详细文件修改步骤  # 放在  # 分页  # 图上  # 是一个  # 成了  # 就在  # 相关内容  # 第一个  # 遍历  # 不多  # 感兴趣  # 数据结构  # 这样做  # 给大家  # 很简单  # 弹出  # 很不错  # 快速回复  # 将它  # 第三个 


相关文章: 如何用5美元大硬盘VPS安全高效搭建个人网站?  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  详解jQuery停止动画——stop()方法的使用  ,想在网上投简历,哪几个网站比较好?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何在腾讯云服务器快速搭建个人网站?  如何通过可视化优化提升建站效果?  如何用AWS免费套餐快速搭建高效网站?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  *服务器网站为何频现安全漏洞?  如何基于云服务器快速搭建网站及云盘系统?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  如何用好域名打造高点击率的自主建站?  如何自定义建站之星网站的导航菜单样式?  实现虚拟支付需哪些建站技术支撑?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  建站之星云端配置指南:模板选择与SEO优化一键生成  网站专业制作公司有哪些,做一个公司网站要多少钱?  想学网站制作怎么学,建立一个网站要花费多少?  招商网站制作流程,网站招商广告语?  如何通过WDCP绑定主域名及创建子域名站点?  ,巨量百应是干嘛的?  nginx修改上传文件大小限制的方法  建站之星免费版是否永久可用?  Thinkphp 中 distinct 的用法解析  潮流网站制作头像软件下载,适合母子的网名有哪些?  官网网站制作腾讯审核要多久,联想路由器newifi官网  建站之星安装后界面空白如何解决?  建站VPS选购需注意哪些关键参数?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  网站制作的步骤包括,正确网址格式怎么写?  模具网站制作流程,如何找模具客户?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  建站之星2.7模板快速切换与批量管理功能操作指南  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何通过wdcp面板快速创建网站?  如何选购建站域名与空间?自助平台全解析  广德云建站网站建设方案与建站流程优化指南  北京建设网站制作公司,北京古代建筑博物馆预约官网?  制作证书网站有哪些,全国城建培训中心证书查询官网?  如何基于PHP生成高效IDC网络公司建站源码?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。