Posts Tagged ‘Javascript’

2组 json diff 对比

/**
*@jsonDataHandler.diff(json1,json2)
*/

Array.prototype.compareTo = function(compareAry) {
if (this.length === compareAry.length) {
var i;
for (i = 0; i < compareAry.length; i+=1) {
if (Object.isArray(this[i]) === true) {
if (this[i].compareTo(compareAry[i]) === false) {
return false;
}
continue;
}
else if (this[i] !== compareAry[i]) {
return false;
}
}
return true;
}
return false;
};

(function() {
var _toString = Object.prototype.toString;
function extend(destination, source) {
for (var property in source)
destination[property] = source[property];
return destination;
}
function keys(object) {
var results = [];
for (var property [...]

2组Array diff 对比

2组array 进行对比,取其差异部分。
 

/**
* @array_diff(new,old)
*/

function array_diff(){var arr1=arguments[0],retArr={};var k1=”,i=1,k=”,arr={};arr1keys:for(k1 in arr1){for(i=1;i&lt;arguments.length;i++){arr=arguments[i];for(k in arr){if(arr[k]===arr1[k1]){continue arr1keys;}}

retArr[k1]=arr1[k1];}}

return retArr;}

Javascript 闭包Closure 的入门与运用

闭包这个词看过很多网站都有说。大家说的方法都大致一样。 今天看了一些大陆的文章,看到我头晕眼花,没看懂它的真正意识。 找了篇 Mozilla 关于闭包运用的文章。 讲述的比较系统易懂。
 

 
1. 闭包的运用

1.1. 实用的闭包

1.2. 使用闭包模拟私有的方法

1.3. 在循环中建立闭包︰常见的错误

1.4. 效能的考虑

闭包的运用
闭包(Closure)经常会被认为是 JavaScript 的高级机能,但了解闭包是精通语言的必要之事。
思考以下的函数︰

function init() {
var name = &quot;Mozilla&quot;;
function displayName() {
alert(name);
}
displayName();
}
init() 函数建立了称为 name 的局域变量,然后定义了称为 displayName() 的函数。displayName() 是内部的函数 – 他是在 init() 内部定义的,而且只在函数本体内部才可使用。displayName() 没有他自己的局域变量,但会重复使用在外部函数里所宣告的 name 变量。
本例只会做一点事 – 试试执行代码看会发生什么。这是词汇作用域的范例︰在 JavaScript 中,变量的作用域是由他自己在原始码中的位置所定义的,且内部的函数能够存取宣告于外部作用域的变量。
现在思考下例︰

function makeFunc() {
var name = [...]

jQuery Tagger 插件- 一个输入框实现多项,以数组形式提交

今天无聊,逛了下Jquery 插件超市,看到个 Tagger插件。  现在我们写Blog,填写 Tag的时候,多数都是用分号逗号方式隔开。而这个插件使用了input 数组的方式。原理使用相同的name:<input type="text" name="test[]"/>
接收的时候,会以数组的形式接收。 看看具体的 Demo

非静态化页面的iframe 自适应高度

传统的iframe 自适应高度

<iframe id="frame_content" src="frame_content.html" scrolling="no" frameborder="0" onload="this.height=this.contentWindow.document.documentElement.scrollHeight"></iframe>

这种是针对 frame内容已静态输出了高度。而当frame页面有 dom 操作改变了页面高度的时候,怎么办?
参考了 口碑UED 的一片文章,使用的方法是setInterval 不断刷新frame框架页面,让frame内容页面高度改变时调整高度。 而为了避免影响性能,可以通过 iframe内的页面对dom操作改变了高度的时候,再去执行父级调整iframe高度。
最后代码:

<iframe id="frame_content" src="iframe_content.html" scrolling="no" frameborder="0" onload="this.height=this.contentWindow.document.documentElement.scrollHeight"></iframe>

<script type="text/javascript">

function reinitIframe(){

var iframe = document.getElementById("frame_content");

try{

var bHeight = iframe.contentWindow.document.body.scrollHeight;

var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;

var height = Math.max(bHeight, dHeight);

iframe.height = height;

}catch (ex){}

}

// window.setInterval("reinitIframe()", 200);

</script>

<!–在iframe_contnet.html 页面,当对DOM操作的时改变了高度,就加入下面代码。 –>
window.parent.reinitIframe();