基于javascript制作微博发布栏效果


Posted in Javascript onApril 04, 2016

本文为大家分享了做微博发布栏效果的过程,涉及到的知识点包括以下:

1.判断IE的方法:直接用  var ie=!-[1,];即可

2.连续发生事件的用法:

 IE下:触发对象.onpropertychange

 标准下:触发对象.oninput

3.焦点聚集和移开事件。onfocus和onblur

4.判断单字节(0-255之间)与双子节:正则表达式:/[^\x00-\xff]/g

代码如上:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
#div1{width: 400px;margin: 20px auto;border: 1px solid #ccc}
#div1 p{float: right;margin: 0;font-size: 13px;}
#div1 textarea{width: 400px;height: 280px;}
#div1 a{background: #ccc;float: right;color: #FFFFFF;text-align: center;background: #00FF00;width: 50px;height: 30px}
#div1 a.dis{background: #ccc;color: black;}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
window.onload=function ()
{
    var oDiv=document.getElementById('div1');
    var oP=oDiv.getElementsByTagName('p')[0];
    var oT=oDiv.getElementsByTagName('textarea')[0];
    var oA=oDiv.getElementsByTagName('a')[0];
    var bool=true;
    var ie=!-[1,];
    var timer=null;
    var num=0;
    //给文本框加聚焦事件
    oT.onfocus=function()
    {
     if(bool)
     {
      oP.innerHTML='你还可以输入<span>90</span>字';
      bool=false;
     } 

    }
     oT.onblur=function()
    {
     if(oT.value=='')
     {
      oP.innerHTML='请输入你的留言';
      bool=true;
     } 

    }
    //输入内容,计算字数
    if(ie)
    {
     oT.onpropertychange=toChange;//连续触发
    }
    else
    {
    oT.oninput=toChange;
    }
    function toChange()
    {
       var num=Math.ceil(getLength(oT.value)/2);//向上取整
       var oSpan=oDiv.getElementsByTagName('span')[0];
       if(num<=90)
       {
        oSpan.innerHTML=90-num;
        oSpan.style.color='';
       }
      else
      {
        oSpan.innerHTML=num-90;
        oSpan.style.color='red';
      }
      if(oT.value==''||num>90)
      {
      oA.className='dis';
      }
      else
      {
       oA.className='';
      }

    }
    function getLength(str)
    {
    return String(str).replace(/[^\x00-\xff]/,'aa').length;//不是单双节的将其变为两个单双节的
    }
    //点击按钮,变色
    oA.onclick=function()
    {
      if(this.className=='dis')
      {
        clearInterval(timer);
        timer=setInterval(function(){
          if(num>5){clearInterval(timer);num=0;}
          else{
            num++;
          }
          if(num%2)
          {
            oT.style.background='red';
          }
          else
          {
             oT.style.background='';
          }

        },100)
      }
      else
      {
        alert('发布成功');
      }
    }
    
}
</script>
</head>
<body >
<div id='div1'>
 <p>请输入你的留言</p>
 <textarea></textarea>
 <a href="#" class="dis">发布</a>
</div>
 
 
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
jQuery 使用手册(三)
Sep 23 Javascript
js获得鼠标的坐标值的方法
Mar 13 Javascript
js unicode 编码解析关于数据转换为中文的两种方法
Apr 21 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
May 12 Javascript
Jquery日期选择datepicker插件用法实例分析
Jun 08 Javascript
xmlplus组件设计系列之图标(ICON)(1)
May 05 Javascript
Django与Vue语法的冲突问题完美解决方法
Dec 14 Javascript
vue filters的使用详解
Jun 11 Javascript
浅谈发布订阅模式与观察者模式
Apr 09 Javascript
详解Node.js异步处理的各种写法
Jun 09 Javascript
js Math数学简单使用操作示例
Mar 13 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
Aug 14 Javascript
纯js实现手风琴效果
Apr 17 #Javascript
AngularJS中的$watch(),$digest()和$apply()区分
Apr 04 #Javascript
Angular 根据 service 的状态更新 directive
Apr 03 #Javascript
jQuery中的Deferred和promise 的区别
Apr 03 #Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
Apr 03 #Javascript
jQuery qrcode生成二维码的方法
Apr 03 #Javascript
Node.js 应用跑得更快 10 个技巧
Apr 03 #Javascript
You might like
我用php+mysql写的留言本
2006/10/09 PHP
php下使用SMTP发邮件的代码
2008/01/10 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
PHP数组与字符串互相转换实例
2020/05/05 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
Javascript 实用小技巧
2010/04/07 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
2010/12/28 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
2016/06/13 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
教你快速搭建Node.Js服务器的方法教程
2017/03/30 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
vue微信分享插件使用方法详解
2020/02/18 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
windows下安装python paramiko模块的代码
2013/02/10 Python
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
Python实现在线音乐播放器
2017/03/03 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
2017/05/24 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
Python如何给你的程序做性能测试
2020/07/29 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
商务日语专业毕业生自荐信
2014/03/27 职场文书
保护动物的宣传语
2015/07/13 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书
go xorm框架的使用
2021/05/22 Golang
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL
Consul在linux环境的集群部署
2022/04/08 Servers