将后台程序(如php)发送过来的json数据转化为javascript的数组或者对象的方法十分简单,代码如下:
- // 假设后台发送的json数据为 '{a:2,b:1}' 存储于str中
- var data = eval( '(' + str + ')' );
然而想将一个javascript对象转化为json格式的字符串却并不那么简单,特别是对象的属性值递归包含一个对象时(如 var obj={a:[2,3],b:{m:[3,4],n:2} } ),那么有没有什么方法将obj转化为json格式的字符串呢?
一、使用 opacity + Alpha Filter
看起来手挺简单的吧?嗯。挺简单的… 希望你能很方便实现这个方案!其实见到这个的时候,我们的第一想法当然是 background + opacity,在不支持 opacity 的 IE 使用 filter 的 alpha 滤镜来实现。然后,我们得到这样的效果:
Tags: 半透明
这是一个效果图
前端实现页面垂直居中的几种思路:
一、利用 position 和负边距
利用绝对定位,让元素的顶部与居中线对齐,再让元素上移 50% 的高度。这个应该不难理解。原理可以用下图来做一个可视化说明:
Tags: 垂直居中
最近在做一个自定义表单的项目,由于各种原因,需使用前台javascript模板,上网google了一下,javascript模板方面的介绍不是很多,不像extjs等框架已经有很成熟的模板系统了,最近微软也发布了一个基于jquery的模板插件(http://github.com/nje/jquery-tmpl),基本用法类似,这些模板都定义了自己专用的模板语言。同事介绍了一个mustache.js的模板类,与大家分享下。
Web 开发者需要经常更新他们的知识,学习新的技术,如果他们还想继续在 Web 开发领域混并混得还不错的话。下面将为你展示 7 项新的Web开发技术,作为一个Web开发人员,你需要了解、熟悉并学会的技术。
CSS3 media queries
目前,大量的智能手机设备的涌现,同时各种不同尺寸屏幕的设备,如平板电脑之类的出现,对Web开发带来了前所未有的挑战,如何让 Web 页面能适应各种尺寸的屏幕让很多 Web 开发人员相当的纠结。幸运的是 CSS3 规范可帮我们轻松的解决此事,你可以根据不同尺寸的屏幕定义不同的 CSS 样式。
原文地址:http://www.alfajango.com/blog/exploring-jquery-live-and-die/
作者和大多数的开发人员都知道jQuery的.live()函数,知道它是做什么用的,但是不知道它是怎么样工作的,使用起来也不得心应手,甚至也没听说过.die()(去掉bind事件)。即使你能熟悉这些,但你能意识到.die() 的问题所在吗?
什么是 .live()?
函数的.live()类似.bind(),除此之外,它允许你绑定事件DOM元素现在和动态生成出来的dom节点,你可以绑定的事件不存在的元素。
原文地址:http://www.hujuntao.com/archives/ie6-position-fixed.html
CSS实现固定浮动层效果,类似于QQ空间顶部的工具条。标准浏览器、IE7+只需在CSS里面设置position:fixed;top:0;就可以了。不论你怎么滚动页面,工具条都会固定在头部。那么IE6怎么实现呢?
众所周知IE6 position不支持fixed属性,下面介绍两种纯CSS模拟实现position:fixed效果。
第一种:HTML、BODY高度100%方案
- * html {
- overflow-y: hidden;
- }/*只是定制垂直滚动fixed*/
- * html body {
- overflow-y: auto;
- height: 100%;
- }
- * html #fixedbox { /*把要固定的元素position设置为absolute */
- position: absolute;
- }
- #fixedbox {
- position:fixed;
- width:100px;
- height:100px;
- background:#000000;
- color:#FFFFFF;
- }
看了群的聊天记录,一直有人问IE6下png图片怎么透明,其实有关png透明的文章网上有很多,方法也有很多,这里就小小的总结一下:
1、使用GIF代替
.pngImg { background:url(image.png); _background:url(image.gif);}
缺点:PNG格式比起GIF来表现色彩更丰富,特别是表现渐变以及背景透明的渐变要比GIF格式出色很多,所以降低了效果
JavaScript实现多维数组、对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序。
sort() 方法用于对数组的元素进行排序。语法如下:
- arrayObject.sort(sortby);
返回值为对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
方式1,splice
- var ary = [1,2,3,4];
- ary.splice(0,ary.length);
- console.log(ary); // 输出 [],空数组,即被清空了
方式2,length赋值为0
这种方式很有意思,其它语言如Java,其数组的length是只读的,不能被赋值。如
- var ary = [1,2,3,4];
- ary.length = 0;
- console.log(ary); // 输出 [],空数组,即被清空了
每次申明一个jQuery对象的时候,返回的是jQuery.prototype.init对象,很多人就会不明白,init明明是 jQuery.fn的方法啊,实际上这里不是方法,而是init的构造函数,因为js的prototype对象可以实现继承,加上js的对象只是引用不会 是拷贝,new jQuery,new jQuery.fn和new jQuery.fn.init的子对象是一样的,只是有没有执行到init的不同。
当我们使用选择器的时候$(selector,content),就会执行init(selectot,content),我们看看inti中是怎样执行的:
- if ( typeof selector == "string" )
- {
- //正则匹配,看是不是HTML代码或者是#id
- var match = quickExpr.exec( selector );
- //没有作为待查找的 DOM 元素集、文档或 jQuery 对象。
- //selector是#id的形式
- if ( match && (match[1] || !context) )
- {
- // HANDLE: $(html) -> $(array)
- //HTML代码,调用clean补全HTML代码
- if ( match[1] ){
- selector = jQuery.clean( [ match[1] ], context );
- }
- // 是: $("#id")
- else {
- //判断id的Dom是不是加载完成
- var elem = document.getElementById( match[3] );
- if ( elem ){
- if ( elem.id != match[3] )
- return jQuery().find( selector );
- return jQuery( elem );//执行完毕return
- }
- selector = [];
- }
- //非id的形式.在context中或者是全文查找
- }
- else{
- return jQuery( context ).find( selector );
- }
- }
这里就说明只有选择器写成$('#id')的时候最快,相当于执行了一次getElementById,后边的程序就不用再执行了。当然往往我们需 要的选择器并不是这么简单,比如我们需要id下的CSS为className, 有这样的写法$('#id.className')和$('#id').find('.className');这两种写法的执行结果都是一样的,比 如<div id=”id”><span class=”className”></span></div>,返回的肯定都是<span class=”className”></span>,但是执行的效率是完全不一样的。
如果没接触过动态语言 ,以编译型语言的思维方式去理解javaScript 将会有种神奇而怪异的感觉,因为意识上往往不可能的事偏偏就发生了,甚至觉得不可理喻.如果在学JavaScript这自由而变幻无穷的语言过程中遇到这种感觉,那么就从现在形始,请放下的您的”偏见”,因为这对您来说绝对是一片新大陆,让JavaScrip 慢慢融化以前一套凝固的编程意识,注入新的生机!
好,言归正传,先理解JavaScrtipt动态变换运行时上下文特性,这种特性主要就体现在apply , call 两个方法的运用上.
js中function对象是一个令人着迷的东西,但由于他太过于灵活,常常令人迷惑,
大多数人这样简写:
- function test () {}
《jsvascript语言精粹》整本书这样写:
- var test = function () {}



e.preventDefault()
e.stopPropagation()
})
递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象.递归是计算机科学的一个重要概念,递归的方法是程序设计中有效的方法,采用递归编写程序能使程序变得简洁和清晰.。
递归函数:把直接或间接地调用自身的函数称为递归函数。函数的构建通常需要一个函数或者一个过程来完成。在数学上,关于递归函数的定义如下:对于某一函数f(x),其定义域是集合A,那么若对于A集合中的某一个值X0,其函数值f(x0)由f(f(x0))决定,那么就称f(x)为递归函数。
递归函数是在一个函数通过调用自身的情况下去解决的。方式如下:
- function factorial(num)
- {
- if(num <= 1)
- {
- return 1;
- }
- else
- {
- return num*factorial(num-1);
- }
- }

