`
收藏列表
标题 标签 来源
输入手机号进行非数字替换 javascript
<input name="phone" id="phone" type="text" value="" maxlength="11" placeholder="请输入您的手机号码" onkeyup="this.value=this.value.replace(/\D/g,'');" onafterpaste="this.value=this.value.replace(/\D/g,'')">
YUI Compressor 工具
java -jar D:\yuicompressor-2.4.6\build\yuicompressor-2.4.6.jar --type js --charset utf-8 -v src.js > packed.js
十六进制,ASSIC互转 perl
				
=**************************************
= Name: Ascii to Hex - Hex to Ascii
= Description:Convert an ascii string to a hexidecimal string and translate a hex string back to ascii. I would not - I repeat NOT - call it encryption, but it can be used to diguise text. For example, in a CGI context, you could use this if you want to pass info on the query string but don't want the average user to be able to understand it. Or you could use it to disguies cookie values. You get the idea...
= By: John Winger
=
= Inputs:a string (scalar)
=
= Returns:a string (scalar)
=
=This code is copyrighted and has= limited warranties.Please see http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeId=627&lngWId=6=for details.=**************************************

#!/usr/bin/perl
##===============================================================
##
##Author: John Winger
##
## Description: Convert an ascii string to a hexidecimal string
##and translate a hex string back to ascii.
##
##===============================================================
use strict;
sub ascii_to_hex ($)
{
	## Convert each ASCII character to a two-digit hex number.
	(my $str = shift) =~ s/(.|\n)/sprintf("%02lx", ord $1)/eg;
	return $str;
}
sub hex_to_ascii ($)
{
	## Convert each two-digit hex number back to an ASCII character.
	(my $str = shift) =~ s/([a-fA-F0-9]{2})/chr(hex $1)/eg;
	return $str;
}
## Let's try it out on the command line
while (1)
{
	print "Enter a string for conversion: ";
	my $str = <STDIN>;
	chomp $str;
	last if !$str || $str =~ /^(?:quit|end)$/i;
	my $h_str = ascii_to_hex $str;
	print "\n\tHex: $h_str\n\n";
	my $a_str = hex_to_ascii $h_str;
	printf("\tASCII: %s\n\n", $a_str eq $str ? $a_str : "error ($a_str)");
}
网页,屏幕大小 javascript
/*
网页可见区域宽:	document.body.clientWidth
网页可见区域高:	document.body.clientHeight
网页可见区域宽:		document.body.offsetWidth		包括边线和滚动条的宽
网页可见区域高:		document.body.offsetHeight		包括边线的宽
网页正文全文宽:		document.body.scrollWidth
网页正文全文高:		document.body.scrollHeight
网页被卷去的高(ff):	document.body.scrollTop
网页被卷去的高(ie):	document.documentElement.scrollTop
网页被卷去的左:		document.body.scrollLeft
网页正文部分上:		window.screenTop
网页正文部分左:		window.screenLeft
屏幕分辨率的高:		window.screen.height
屏幕分辨率的宽:		window.screen.width
屏幕可用工作区高度:	window.screen.availHeight
屏幕可用工作区宽度:	window.screen.availWidth
你的屏幕设置是:		window.screen.colorDepth		位彩色
你的屏幕设置:		window.screen.deviceXDPI		像素/英寸
*/
命名函数表达式 javascript
// 1) 使用独立的作用域包含声明
var addEvent = (function(){
	var docEl = document.documentElement;

    // 2) 声明要引用函数的变量
    var fn;

    if (docEl.addEventListener) {
		// 3) 有意给函数一个描述性的标识符
		fn = function addEvent(element, eventName, callback) {
			element.addEventListener(eventName, callback, false);
		}
    } else if (docEl.attachEvent) {
		fn = function addEvent(element, eventName, callback) {
			element.attachEvent('on' + eventName, callback);
		}
    } else {
		fn = function addEvent(element, eventName, callback) {
			element['on' + eventName] = callback;
		}
	}

    // 4) 清除由JScript创建的addEvent函数
    //    一定要保证在赋值前使用var关键字
    //    除非函数顶部已经声明了addEvent
    var addEvent = null;

	// 5) 最后返回由fn引用的函数
	return fn;
})();
setInterval(), setTimeout()传参 javascript
// 反面示例
setTimeout("myFunc()", 1000);
setTimeout("myFunc(1, 2, 3)", 1000);

// 更好的
setTimeout(myFunc, 1000);
setTimeout(function () {
   myFunc(1, 2, 3);
}, 1000);
for循环的优化 javascript
//这就是为什么当你循环获取值时,缓存数组(或集合)的长度是比较好的形式,正如下面代码显示的:

for (var i = 0, max = myarray.length; i < max; i++) {
   // 使用myarray[i]做点什么
}

/*
这样,在这个循环过程中,你只检索了一次长度值。
在所有浏览器下,循环获取内容时缓存HTMLCollections的长度是更快的,2倍(Safari3)到190倍(IE7)之间。//zxx:此数据貌似很老,仅供参考
注意到,当你明确想要修改循环中的集合的时候(例如,添加更多的DOM元素),你可能更喜欢长度更新而不是常量。
伴随着单var形式,你可以把变量从循环中提出来,就像下面这样:
*/

function looper() {
   var i = 0,
        max,
        myarray = [];
   // ...
   for (i = 0, max = myarray.length; i < max; i++) {
      // 使用myarray[i]做点什么
   }
}

/*
这种形式具有一致性的好处,因为你坚持了单一var形式。不足在于当重构代码的时候,复制和粘贴整个循环有点困难。例如,你从一个函数复制了一个循环到另一个函数,你不得不去确定你能够把i和max引入新的函数(如果在这里没有用的话,很有可能你要从原函数中把它们删掉)。
最后一个需要对循环进行调整的是使用下面表达式之一来替换i++。
*/

i = i + 1;
i += 1;

/*
JSLint提示您这样做,原因是++和–-促进了“过分棘手(excessive trickiness)”。//zxx:这里比较难翻译,我想本意应该是让代码变得更加的棘手
如果你直接无视它,JSLint的plusplus选项会是false(默认是default)。
还有两种变化的形式,其又有了些微改进,因为:
* 少了一个变量(无max)
* 向下数到0,通常更快,因为和0做比较要比和数组长度或是其他不是0的东西作比较更有效率
*/

//第一种变化的形式:
var i, myarray = [];
for (i = myarray.length; i–-;) {
   // 使用myarray[i]做点什么
}

//第二种使用while循环:
var myarray = [],
    i = myarray.length;
while (i–-) {
   // 使用myarray[i]做点什么
}

//这些小的改进只体现在性能上,此外JSLint会对使用i–-加以抱怨。
条件语句内使用函数表达式,而不是函数声明 javascript
//另外,还有一点需要提醒一下,函数声明在条件语句内虽然可以用,但是没有被标准化,也就是说不同的环境可能有不同的执行结果,所以这样情况下,最好使用函数表达式:

// 千万别这样做!
// 因为有的浏览器会返回first的这个function,而有的浏览器返回的却是第二个

if (true) {
    function foo() {
        return 'first';
    }
} else {
    function foo() {
      return 'second';
    }
}
foo();

// 相反,这样情况,我们要用函数表达式
var foo;
if (true) {
    foo = function() {
      return 'first';
    };
} else {
    foo = function() {
      return 'second';
    };
}
foo();
字符串转换成数字 javascript
var month = "06",
    year = "09";
month = parseInt(month, 10);
year = parseInt(year, 10);

/**
此例中,如果你忽略了基数参数,如parseInt(year),返回的值将是0,因为“09”被当做8进制(好比执行 parseInt( year, 8 )),而09在8进制中不是个有效数字。

替换方法是将字符串转换成数字,包括:
**/

var num1 = +"08"; // 结果是 8
var num2 = Number("08"); // 8

/**
这些通常快于parseInt(),因为parseInt()方法,顾名思意,不是简单地解析与转换。但是,如果你想输入例如“08 hello”,parseInt()将返回数字,而其它以NaN告终。
**/
Global site tag (gtag.js) - Google Analytics