h5页面js判断手机横屏

主要通过window.orientation来实现,不过这个方法貌似要被未来的标准废弃掉。
点击查看orientation文档
下面的代码最好用手机进行测试,电脑的浏览器不一定会生效。

function rotate() {
     
      if (window.orientation == 180 || window.orientation == 0) {
      alert('竖屏')
      }
      if (window.orientation == 90 || window.orientation == -90) {
      alert('横屏')
      }
    }
    window.addEventListener("load", rotate, false);
    window.addEventListener("onorientationchange" in window ? "orientationchange" : "resize", rotate, false);

GoJs官方入门教程

不保证有翻译的误差,请参考原文一起阅读。
原文地址:https://gojs.net/latest/learn/index.html

GoJS是一个实现交互类图表(比如流程图,树图,关系图,力导图等等)的JS库。本文将介绍GoJs的精华部分。
因为GoJS依赖于HTML5,所以请保证您的浏览器版本支持HTML5,当然还要加载这个库。

< !DOCTYPE html>  <!-- HTML5 文档类型 -->
<html>
<head>
  <!-- 调式或开发模式下请使用 go-debug.js -->
  <script src="go-debug.js"></script>
  . . .
</head></html>

您可以在 https://gojs.net/latest/doc/download.html 下载GoJS以及所有的示例。或者使用下面的CDNJS直接引入:
Read More

post

流行的前端工具推荐

1. node.js + npm, 这个是前端工具的一个平台,没有他们就没有以下的工具,建立开发环境,下载开发工具,运行开发工具的利器


2. bower, 库依赖管理器,类似于npm,但针对浏览器JavaScript的依赖管理,减少寻找库,下载库和升级库的烦恼
Read More

随机生成n个1-maxNum之间的值不会重复的整数组,十位补0

/**
 * 随机生成n个1-maxNum之间的值不会重复的整数组,十位补0
 * @param maxNum 1-几
 * @param n 多少个
 * @returns {arr}
 */
var randomIntNum = function(maxNum, n) {
    var oArr = [];
    var newArr = [];
    var rNum;
    for (var i = 0; i < n;) {
        rNum = parseInt(Math.random() * maxNum + 1);
        if (!oArr[rNum]) {
            oArr[rNum] = rNum;
            (rNum < 10) && (rNum = '0' + rNum);
            newArr.push(rNum);
            i++;
        }
    }
    return newArr;
}

解决windows版Webstorm的svn插件不能使用的方法

如果你使用windows环境开发,并且svn工具用的是TortoiseSVN (小乌龟),那么你在安装完webstorm之后就会发现svn插件报这个错误。
can’t use subversion command line client : svn

意思就是不能使用svn的命令行工具,所以这个插件现在用不了。
原因是TortoiseSVN 默认不支持conmand line操作。

知道原因就可以找解决办法了:

1、 下载一个命令行工具 sliksvn
下载地址:https://sliksvn.com/download/

2、 一路下一步直到安装成功,如果你使用默认路径的话他应该被安装在这里 C:\Program Files\SlikSvn

3、 在with conmand line client设置成你的c:\Program Files\SlikSvn\bin\svn.exe即可使用svn了。

有的时候你可能还会遇到另外一个错误
Errors found while svn working copies detection

原因是版本不一致造成的,你选 1.8 format 或者1.7试试,对应上就可以了。

Firefox(火狐) 下 text-overflow:ellipsis 的省略号会浮动在上面

text-overflow:ellipsis 属性通常用于隐藏超出长度的文本,并在文本最后面增加省略号。
如果在网页的交互等过程中,出现一个新层(例如鼠标移动到下拉菜单,弹出下拉菜单内容),在 Firefox 下,文本内容当然会被新弹出内容遮住,但是省略号并不会。它会出现在新层的上面。

如果你也遇到了这个问题,解决方法很简单,只需要为新弹出的覆盖层的 z-index 属性赋值为 >1 的数值即可,这样就可以解决了。你可以在上面的 Demo 中,使用 Firebug 增加一下。

post

jQuery dataTables 的使用

jQuery 的插件 dataTables 是一个优秀的表格插件,提供了针对表格的排序、浏览器分页、服务器分页、筛选、格式化等功能。dataTables 的网站上也提供了大量的演示和详细的文档进行说明,为了方便学习使用,这里一步一步进行说明。

首先,需要到 dataTables 的网站 http://www.datatables.net/ 下载这个脚本库,

目前最新的版本是 1.8.2,下载的压缩包中使用的 jQuery 是 1.4.4 。现在 jQuery1.5.1 已经发布,所以,这里使用最新的 jQuery 1.5.1 。

然后,在网页中先加入 jQuery 的引用,然后,加入 dataTables 的引用。
Read More

JS数字金额大写转换

/** 数字金额大写转换(可以处理整数,小数,负数) */  
var digitUppercase = function(n) {
	var fraction = ['角', '分'];
	var digit = [
		'零', '壹', '贰', '叁', '肆',
		'伍', '陆', '柒', '捌', '玖'
	];
	var unit = [
		['元', '万', '亿'],
		['', '拾', '佰', '仟']
	];
	var head = n < 0 ? '欠' : '';
	n = Math.abs(n);
	var s = '';
	for (var i = 0; i < fraction.length; i++) {
		s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
	}
	s = s || '整';
	n = Math.floor(n);
	for (var i = 0; i < unit[0].length && n > 0; i++) {
		var p = '';
		for (var j = 0; j < unit[1].length && n > 0; j++) {
			p = digit[n % 10] + unit[1][j] + p;
			n = Math.floor(n / 10);
		}
		s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
	}
	return head + s.replace(/(零.)*零元/, '元')
		.replace(/(零.)+/g, '零')
		.replace(/^整$/, '零元整');
};

console.log(digitUppercase(12.3));

Underscore 常用方法

概述

Underscore.js是一个很精干的库,压缩后只有4KB。它提供了几十种函数式编程的方法,大大方便了Javascript的编程。MVC框架backbone.js就是基于这个库。

它定义了一个下划线(_)对象,函数库的所有方法都属于这个对象。这些方法大致上可以分成:集合(collection)、数组(array)、函数(function)、对象(object)和工具(utility)五大类。

 

在node.js下安装

Underscore.js不仅可以用于浏览器环境,还可以用于node.js。安装命令如下:

npm install underscore

但是,node.js不能直接使用_作为变量名,因此要用下面的方法使用underscore.js

var u = require("underscore");

 

与集合有关的方法

Javascript语言的数据集合,包括两种结构:数组和对象。以下的方法同时适用于这两种结构。

 

map

该方法对集合的每个成员依次进行某种操作,将返回的值依次存入一个新的数组。

_.map([1, 2, 3], function(num){ return num * 3; });  // [3, 6, 9]    _.map({one : 1, two : 2, three : 3}, function(num, key){ return num * 3; });  // [3, 6, 9]

 

each

该方法与map类似,依次对集合的每个成员进行某种操作,但是不返回值。

_.each([1, 2, 3], alert);    _.each({one : 1, two : 2, three : 3}, alert);

 

reduce

该方法依次对集合的每个成员进行某种操作,然后将操作结果累计在某一个初始值之上,全部操作结束之后,返回累计的值。

该方法接受三个参数。第一个参数是被处理的集合,第二个参数是对每个成员进行操作的函数,第三个参数是累计用的变量。

_.reduce([1, 2, 3], function(memo, num){ return memo + num; }, 0);  // 6

reduce方法的第二个参数是操作函数,它本身又接受两个参数,第一个是累计用的变量,第二个是集合每个成员的值。
Read More

cursor — 定义鼠标样式

取值: [ [<uri> ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-resize | n-resize | se-resize | sw-resize | s-resize | w-resize | text | wait | help | progress ] ] | inherit

  • [<uri> ,]*: 根据用户定义的资源显示
  • auto: 正常鼠标
  • crosshair: 十字鼠标
  • default: 默认鼠标
  • pointer: 点状鼠标
  • move: 移动鼠标
  • e-resize,ne-resize,nw-resize,n-resize,se-resize,sw-resize,s-resize,w-resize: 改变大小鼠标
  • text: 文字鼠标
  • wait: 等待鼠标
  • help: 求助鼠标
  • progress: 过程鼠标
  • inherit: 继承
post

windows 下安装nodejs及其配置环境

相信对于很多关注javascript发展的同学来说,nodejs已经不是一个陌生的词眼。有关nodejs的相关资料网上已经铺天盖地。由于它的高并发特性,造就了其特殊的应用地位。

国内目前关注最高,维护最好的一个关于nodejs网站应该是http://www.cnodejs.org/

这里不想谈太多的nodejs的相关信息。只说一下,windows系统下简单nodejs环境配置。

第一步:下载安装文件

下载地址:官网http://www.nodejs.org/download/ 

 

这里用的是 
Read More

CSS3的响应式布局

做手机端网页需要用到响应式布局,首先需要再HTML文件头声明一下:

&lt;meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" /&gt;

主要目的是宽度控制和禁止用户缩放,具体参数自己GOOGLE一下。

下面是CSS判断是PC端还是移动端
其实很简单,用CSS3的媒体查询就可以非常方便去实现,不需要用userAgent神马的那么麻烦。

/*最小宽度800就是PC端*/
@media all and (min-width: 800px) {
  #nav {
    width: 300px;
    float: left;
    margin-right: 20px;
  }
  #grid {
    width: 450px;
    float: left;
  }
}
/*最大宽度799就是移动端*/
@media all and (max-width: 799px) {
  #nav {
    width: 100%;
  }
  #grid {
    width: 100%;
  }
}

知道了上面2点就可以实现响应式布局了,是不是非常简单?
移动端还有一些特殊的事件(手指滑动)神马的,后续我再专门写篇移动端的JS文章好了。

JS将所有对象s的属性复制给对象r

原生写法:

/**
		 * 将所有 s 的属性复制给 r
		 * @param r {Object}
		 * @param s {Object}
		 * @param is_overwrite {Boolean} 如指定为 false ,则不覆盖已有的值,其它值
		 *	  包括 undefined ,都表示 s 中的同名属性将覆盖 r 中的值
		 */
		mix: function (r, s, is_overwrite) { //TODO:
			if (!s || !r) return r;

			for (var p in s) {
				if (is_overwrite !== false || !(p in r)) {
					r[p] = s[p];
				}
			}
			return r;
		}

jQuery写的话就太方便了

var a={
        aa:1,
        ab:2
    };
    var b={
        ba:1,
        bb:2
    };
    $.extend(a,b);
    console.info(a);