记录日常点点滴滴,欢迎来到我的小站。

0%

为了实现网页更快速的展示,通常需要将CSS文件进行压缩整理。
根据网上一些Javascript教程,我编写了一个网页代码可以实现CSS的压缩整理,直接上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>样式表(CSS) 格式整理与压缩</title>
<style type="text/css">
html,body,form,fieldset,textarea { height:100%; margin:0; padding:0; border:0; font-size:10pt; background:#eee; }
form { margin:0 1%; overflow:hidden; }
legend { line-height:3em; font-weight:bolder; }
button { float:left; margin:1% 1% 0 0; cursor:pointer; }
textarea { width:100%; height:20em; border:1px solid #ccc; display:block; background:#fff; }
</style>
</head>
<body>
<form action="" onsubmit="return false"><fieldset>
<legend>样式表(CSS) 格式整理与压缩</legend>
<textarea name="" rows="" cols="" id="codeText">
body * { font-size:10pt; }/* ss sda */
p
{ clear:left; padding:5px 10px;
}
td
,
fieldset
{ padding : 10px ; }
textarea {
width:90%;
height:10em;
}
</textarea>

<button type="button" onclick="$('codeText').value=code.A();">压缩代码</button>
<button type="button" onclick="$('codeText').value=code.B();">格式(多行)</button>
<button type="button" onclick="$('codeText').value=code.C();">格式(单行)</button>
<button type="button" onclick="$('codeText').value=code.Z();">还原代码</button>
</fieldset></form>
<script type="text/javascript">
function $(id){return document.getElementById(id);}
function codeZip(obj){
this.S=function(){
var code=obj.value;
if(!this.codeZ||this.codeZ=="")this.codeZ=code;
code=code.replace(/(\n|\t|\s)*/ig,'$1');
code=code.replace(/\n|\t|\s(\{|\}|\,|\:|\;)/ig,'$1');
code=code.replace(/(\{|\}|\,|\:|\;)\s/ig,'$1');
return code;
}
this.A=function(){
var code=this.S();
return code;
}
this.B=function(){
var code=this.S();
code=code.replace(/(\{)/ig,' $1');
code=code.replace(/(\{|\;)/ig,'$1\n\t');
code=code.replace(/\t*(\})/ig,'$1\n');
code=code.replace(/(\*\/)/ig,'$1\n');
return code;
}
this.C=function(){
var code=this.S();
code=code.replace(/(\})/ig,'$1\n');
code=code.replace(/(\*\/)/ig,'$1\n');
return code;
}
this.Z=function(){
return (this.codeZ)?this.codeZ:obj.value;
}
var my=this;
obj.onkeydown=function(){
my.codeZ="";
}
}
var code=new codeZip($('codeText'));
</script>
</body>
</html>

javascript实现的样式表(CSS) 格式整理与压缩,可以分为多行与单行,非常不错。

(function(){})()
相当于先定义 function xx(){},后调用 xx();
()是最高优先级的,所以先执行function(){},
这个定义了一个匿名函数,等于xx=function(){}
接着就是调用xx()了;
给个例子
JScript code

1
2
3
4
5
6
7
8
functionf1(a)
{
alert(a);
}
functionf2(a)
{
returnfunction(){ alert(a); }
}
阅读全文 »

1
2
3
$.getScript('xxx.js',function(){
alert('xxx.js加载成功并且已经执行了')
})

应该是jquery的监听问题,ajax成功后append进来的数据不会被原先已经定义好的函数识别。对于这种情况,我一般采用将所有jquery函数归入一个函数中,然后在ajax的success函数内部调用这个函数,以识别新增数据。示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$(document).ready(function(){
function myListener(){
$("#abc").click(function(){
//dosomething

});
$("#getData").click(function(){
$.ajax({
url: url, //url为变量
success:function(msg){
$("#feedback").append(msg);
myListener(); //监听,相当引入所有其中的函数。

}

});

});
}

});

URL即统一资源定位符 (Uniform Resource Locator, URL),完整的URL由这几个部分构成:

1
scheme://host:port/path?query#fragment

scheme:通信协议,常用的http,ftp,maito等。
host:主机,服务器(计算机)域名系统 (DNS) 主机名或 IP 地址。
port:端口号,整数,可选,省略时使用方案的默认端口,如http的默认端口为80。
path:路径,由零或多个”/“符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。
query:查询,可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数,可有多个参数,用”&”符号隔开,每个参数的名和值用”=”符号隔开。
fragment:信息片断,字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。(也称为锚点)
下面我们举例一个URL,然后获得它的各个组成部分。
http://www.ttwinbug.com/newsDetail.php?id=65
window.location.href
可以获得整个URL字符串(在浏览器中就是完整的地址栏)。

1
2
var test = window.location.href;
alert(test);
阅读全文 »

1、插入排序

1)算法简介
插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
2)算法描述和实现
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:
从第一个元素开始,该元素可以认为已经被排序;
取出下一个元素,在已经排序的元素序列中从后向前扫描;
如果该元素(已排序)大于新元素,将该元素移到下一位置;
重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
将新元素插入到该位置后;
重复步骤2~5。
JavaScript代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function insertionSort(array){
if(Object.prototype.toString.call(array).slice(8,-1)==='Array'){
for(var i = 1; i<array.length; i++){
var key = array[i];
var j = i-1;
while(j>=0 && array[j] > key){
array[j + 1] = array[j];
j--;
}
array[j + 1] = key;
}
return array;
}else{
return 'array is not an Array!';
}
}
阅读全文 »

  1. shift:删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined

    1
    2
    3
    var a = [1,2,3,4,5];

    var b = a.shift(); //a:[2,3,4,5] b:1
  2. unshift:将参数添加到原数组开头,并返回数组的长度

    1
    2
    3
    var a = [1,2,3,4,5];

    var b = a.unshift(-2,-1); //a:[-2,-1,1,2,3,4,5] b:7
    阅读全文 »

1
2
3
4
5
6
7
8
9
10
11
function undulpicate(array){  
for(var i=0;i<array.length;i++) {
for(var j=i+1;j<array.length;j++) {
if(array[i]===array[j]) {
array.splice(j,1);
j--;
}
}
}
return array;
}

大家测试看看吧

我一直使用printf调试程序,一般来说都是比较顺利,但有时候,你会发现需要更好的方法。下面几个JavaScript技巧相信你一定会觉得十分有用:

  1. debugger

我以前也说过,你可以在JavaScript代码中加入一句debugger;来手工造成一个断点效果。

需要带有条件的断点吗?你只需要用if语句包围它:

1
2
3
4
JavaScript代码
if (somethingHappens) {
debugger;
}

但要记住在程序发布前删掉它们。

阅读全文 »

html

1
2
3
<textarea id="comment">

</textarea>

Jquery

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
$('#comment').keydown(function(e){
var curKey = e.which;
if(e.shiftKey && e.which == 13 ){
var curr = getCaret(this);
var val = jQuery(this).val();
var end = val.length;
//jQuery(this).val( val.substr(0, curr) + 'n' + val.substr(curr, end));
}else if(curKey == 13){
$('#commentform').submit();
return false;
}
});

var str;
str = (window.location.search).substring(1);
if(str){
$('.rank_up_test').removeClass('showme');
var classname = '#middle_rank_up_test_'+ str + ' .rank_up_test';
console.log(classname);
$('#middle_rank_up_test_' + str).show();
}

});

function getCaret(el) {
if (el.selectionStart) {
return el.selectionStart;
}else if (document.selection) {
el.focus();
var r = document.selection.createRange();
if (r == null) {
return 0;
}
var re = el.createTextRange(),
rc = re.duplicate();
re.moveToBookmark(r.getBookmark());
rc.setEndPoint('EndToStart', re);
return rc.text.length;
}
return 0;
}