今天给大家一个if else的Javascript小示例,其中我在js文件里写了很多注释,有兴趣的同学自己看注释,另外对于聊天界面的显示方式,我写了两种,大家也可以分别试试:

老规矩,先上图:

html代码

模拟手机短信发送

css代码

body {

background: #000;

}

.phoneBox {

background: url(phoneBg.jpg) no-repeat;

width: 289px;

height: 594px;

margin: 50px auto;

}

.phoneContent {

width: 237px;

height: 370px;

float: left;

overflow-x: hidden;

margin: 87px 0 0 26px;

}

#phoneContrl {

float: left;

margin: 7px 0 0 30px;

}

.emo, #textInput {

height: 32px;

border: 1px solid #ded5e6;

border-radius: 5px;

float: left;

margin-right: 3px;

}

.emo {

width: 31px;

cursor: pointer;

background: url(em1.jpg) no-repeat center;

}

#textInput {

width: 135px;

padding: 0 0 0 5px;

}

#textSet {

height: 32px;

cursor: pointer;

width: 47px;

border: none;

background: #f7f7f7;

font-size: 16px;

line-height: 32px;

text-align: center;

}

.user1, .user2 {

width: 100%;

float: left;

margin: 10px 0;

font-size: 15px;

}

.user1 .userLogo,.user1 .userText,.user2 .userLogo,.user2 .userText {

float: left;

width: 30px;

margin: 0 2px;

}

.user1 .userText, .user2 .userText {

width: auto;

max-width: 165px;

background: #ded6e7;

color: #333;

border-bottom: 2px solid #b4b0b9;

padding: 5px;

border-radius: 5px;

}

.user2 .userLogo,.user2 .userText {

float: right;

}

.user2 .userText {

background: #21c616;

color:#fff;

border-bottom: 2px solid #0c7506;

}

Javascript代码

window.onload = function () {

function luka(element) {

//if (/#/.test(element) == true) 正则也可以匹配,不过正则的效率没有函数高,貌似任何语言都是

if (element.indexOf('#') > -1) {

return document.getElementById(element.replace(/#/,''));

};

if (element.indexOf('.') > -1) {

return document.getElementsByClassName(element.replace(/\./g,''));

};

if (/^[a-zA-Z]+&/.element = true) {

return document.getElementsByTagName(element);

};

};

luka(".emo")[0].onclick = function() {

var _logo = luka(".emo")[0].getAttribute("_logo")

if ( _logo == 1 ){

luka(".emo")[0].setAttribute("style","background:url(em2.jpg) no-repeat center");

luka(".emo")[0].setAttribute("_logo","2");

};

if ( _logo == 2 ){

luka(".emo")[0].setAttribute("style","background:url(em1.jpg) no-repeat center");

luka(".emo")[0].setAttribute("_logo","1");

};

};

luka("#textSet").onclick = function() {

if ( luka("#textInput").value == '') {

alert("还没有输入任何内容");

}

else {

var creatDiv = document.createElement("div")

//这种方式是完全参考gif的效果,但是用户体验不好

if(luka(".emo")[0].getAttribute("_logo") == 1) {

creatDiv.className = "user1"; //id title className 可以用这种方式设置,style能设置,但是无法赋值

luka(".phoneContent")[0].insertBefore(creatDiv,luka(".phoneContent")[0].childNodes[0]);

luka(".user1")[0].innerHTML = '

';

luka(".user1")[0].innerHTML += '

'+ luka("#textInput").value +'

';

};

if(luka(".emo")[0].getAttribute("_logo") == 2) {

creatDiv.className = "user2"; //id title className 可以用这种方式设置,style能设置,但是无法赋值

luka(".phoneContent")[0].insertBefore(creatDiv,luka(".phoneContent")[0].childNodes[0]);

luka(".user2")[0].innerHTML = '

';

luka(".user2")[0].innerHTML += '

'+ luka("#textInput").value +'

';

};

/*

这种写法,实现的就是每次都在上一条消息的下面来显示最新消息,这种体验才是正确的

代码应该可以再优化一下,效果还可以做一下实现内容多的时候,滚动条跟着滚动

_childOneDivNmu,_childTwoDivNmu是为了知道第几个元素,不然每一次都在更新第一个元素

if(luka(".emo")[0].getAttribute("_logo") == 1) {

creatDiv.className = "user1"; //id title className 可以用这种方式设置,style能设置,但是无法赋值

luka(".phoneContent")[0].appendChild(creatDiv);

var childNum = parseInt(luka(".phoneContent")[0].getAttribute("_childOneDivNmu"));

//console.log(childNum);

luka(".phoneContent")[0].setAttribute("_childOneDivNmu",childNum+1);

//var childNum = luka("#");

luka(".user1")[childNum].innerHTML = '

';

luka(".user1")[childNum].innerHTML += '

'+ luka("#textInput").value +'

';

};

if(luka(".emo")[0].getAttribute("_logo") == 2) {

creatDiv.className = "user2"; //id title className 可以用这种方式设置,style能设置,但是无法赋值

luka(".phoneContent")[0].appendChild(creatDiv);

var childNum = parseInt(luka(".phoneContent")[0].getAttribute("_childTwoDivNmu"));

//console.log(childNum);

luka(".phoneContent")[0].setAttribute("_childTwoDivNmu",childNum+1);

//var childNum = luka("#");

luka(".user2")[childNum].innerHTML = '

'

luka(".user2")[childNum].innerHTML += '

'+ luka("#textInput").value +'

'

};*/

};

};

}

知识点

if else的运用,初学在js中使用正则表达式

使用insertBefore把元素插入到某个元素之前

html仿手机界面,javascript新手实例3-仿手机聊天界面(if else运用)相关推荐

  1. iOS,Android调用手机QQ与指定用户或公众号聊天界面

    最近产品那边有需求.需要在自己的App中跳到QQ的公众服务号.直接在QQ公众号中咨询.去QQ开发平台 看了下.没有看到QQ公众号的信息呀(内心是拒绝的).但是有些App确实又可以跳转(怎么搞得). 然 ...

  2. 仿QQ聊天软件(登录界面、好友界面、聊天界面)-Java(Swing、Socket)

    文章目录 一.项目结构 二.项目功能 三.制作界面 (一).登录界面的制作 (二).好友列表界面 (三).聊天界面 四.制作服务器 五.设计通信协议 六.项目缺点 学习了socket通信后,就想来制作 ...

  3. php写的微信聊天界面,浅谈 聊天界面 核心架构设计

    本文以一个小例子简单的演示在微信小程序中使用环信SDK收发消息.官网demo 下载后把整个utils目录下的文件复制到咱自己工程的目录下.在WebIMConfig.js中将AppKey替换成自己应用的 ...

  4. Tim聊天界面不显示头像问题解决方法

    无意中不小心更改了tim聊天界面的显示比例,结果发现更改之后聊天界面中双方头像不再显示, 聊天界面就这样无意中设置成文本模式,让我有点不习惯,于是开始想办法把头像显示回来,百度了一下,找到了解决方案 ...

  5. 防qq聊天界面纯HTML5,html5 实现qq聊天的气泡效果

    教程:http://m.blog.csdn.net/blog/yhc13429826359/38778337 写的很好.自己实现的时候,由于img float:left,会脱离文档流,导致结构混乱. ...

  6. h5聊天页面 jquery_HTML5仿微信聊天界面、微信朋友圈实例代码

    这几天使用H5开发了一个仿微信聊天前端界面,尤其微信底部编辑器那块处理的很好,使用HTML5来开发,虽说功能效果并没有微信那么全,但是也相当不错了,可以发送消息.表情,发送的消息自动回滚定位到底部,另 ...

  7. Silverlight+WCF 新手实例 象棋 主界面-棋谱-获取列表(三十八)

    2019独角兽企业重金招聘Python工程师标准>>> 在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 在Silverlight+WCF 新手实例 象棋 主界 ...

  8. Silverlight+WCF 新手实例 象棋 主界面-实时聊天区(二十五)

    在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 演示已更新到此节介绍:Silverlight+WCF 新手实例 象棋 介绍III(二十三) 本节连着Silverlight+WC ...

  9. Silverlight+WCF 新手实例 象棋 主界面-事件区-求和认输(三十二)

    在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 事隔几篇,我们又回到事件区,继续其它两个按钮事件,来张图吧: 在Silverlight+WCF 新手实例 象棋 主界面-事件区- ...

最新文章

  1. MemberShip使用大全
  2. JBPM4.4总结-嵌入自己的用户体系(集成自定义用户表)
  3. ES6的generator
  4. golang 一段代码不甚明白
  5. Optimal Step Nonrigid ICP Algorithms for surface registration
  6. 挖矿从入门到入狱,百度运维获利 10 万被判 3 年。网友:人生已毁
  7. Spring实现Controller中方法参数校验
  8. BootDo平台免密登陆
  9. 计算机基础考试在线搜题,计算机基础考试题库 (含答案).doc
  10. [区块链]对话区块链人工智能顶级实力公司ObEN
  11. 三种引号:双引号,单引号和反引号
  12. 根据qq宠物等级计算级别
  13. latex参考文献居中_latex参考文献常见问题
  14. 解决Win10桌面右键卡顿一直转圈圈的问题
  15. Android libyuv应用系列(二)libyuv在Android中的使用
  16. 【总结】Android的16ms和垂直同步以及三重缓存
  17. jdk11新特性——ZGC
  18. 利用ArcGIS做一张“三调“土地利用现状图(附三调符号库下载)
  19. 缓存穿透,击穿,雪崩
  20. 携程CEO孙洁:17年后的红色警报

热门文章

  1. [引]VS2005 之 Visual Basic 程序的结构
  2. (转)初次体验.net Ajax无刷新技术
  3. UDT源码剖析(四):UDT的GC线程相关过程代码注释
  4. RCF的优势--分布式应用
  5. CentOS 8明年正式停止维护,以后再也不会有免费的RHEL了!
  6. C 实现 删除字符串空白符的函数 strtrim
  7. php中goto另一个页面,php中goto操作符的详细介绍
  8. LeetCode 2120. 执行所有后缀指令(模拟)
  9. 用Docker部署TensorFlow Serving服务
  10. LeetCode 778. 水位上升的泳池中游泳(二分查找+dfs)