‘JavaScript脚本’ 分类的存档

随着越来越多的交互效果,Javascript越来越流行,对前端的要求也越来越高,无论是Dom,Event,Ajax……还是jquery,prototype,mootools,YUI,我们需要更多的学习 发展

1 条评论一个保证利润的彩票计算器[愁啊,我的数学功底]

2010年7月4日

Demo:http://www.iamued.com/demo/jisuan.html

核心代码

 <script>
  function js(){
	var jine=parseInt(document.getElementById("je").value);//每注金额
	var jiangjin=parseInt(document.getElementById("jj").value);//每注奖金
	var num=parseInt(document.getElementById("num").value);//计算期数
	var win=parseInt(document.getElementById("win").value);//保证利润数
	var content=document.getElementById("content");//输出容器
	var countmoney=0;//累计总投入
	var janci=jiangjin-jine;//每注利润值
	for(var i=1;i<=num;i++){
		//计算倍数
		var beishu=Math.ceil((countmoney+win)/janci);
		//累计投入金额
		countmoney=(countmoney+(beishu*jine));
		//本期奖金
		var nowjiangjin=(beishu*jiangjin);

		content.innerHTML=content.innerHTML+"第"+i+"期&nbsp需购买:"+beishu+"注&nbsp;本期奖金:"+nowjiangjin+"&nbsp;总投入:"+countmoney+"&nbsp;净利润:"+(nowjiangjin-countmoney)+"<br>";
	}
  }
  </script>

看具体效果的请去 Demo:http://www.iamued.com/demo/jisuan.html

还有一个C#软件版本的 直接放出下载地址吧 http://www.iamued.com/demo/jisuan.exe

就这么简单的一个算法 折腾了我半天 愁

没有评论微软的jQuery国际化插件

2010年6月30日

[原文发表地址] jQuery Globalization Plugin from Microsoft

[原文发表时间] Thursday, June 10, 2010 10:34 PM

上个月,我写了一篇关于微软如何在向 jQuery贡献代码的文章,也谈到了在第一批贡献的代码中的一些功能:jQuery 模板和数据链接支持.

今天,我们发布了一个新的jQuery国际化插件的原型,你可以在你的JavaScript程序中引用这 个插件添加国际化功能。插件涵盖了超过350种文化的国际化信息,从苏格兰盖尔语、佛里斯兰语、匈牙利语、日语到加拿大英语等。插件将以开源的形式发布。

你可以从我们的Github代码库下载插件的原型版本:

http://github.com/nje/jquery-glob

另外也可以在这里下 载一些示例了解简单的用法。

理解国际化

阅读全文…

没有评论判断 iframe 是否加载完成的完美方法

2010年6月22日

今天正好需要判断iframe加载完成 正好找到怿飞同学的这篇文章 方法很完美

var iframe = document.createElement("iframe");
iframe.src = "http://www.planabc.net";

if (!/*@cc_on!@*/0) { //if not IE
    iframe.onload = function(){
        alert("Local iframe is now loaded.");
    };
} else {
    iframe.onreadystatechange = function(){
        if (iframe.readyState == "complete"){
            alert("Local iframe is now loaded.");
        }
    };
}

document.body.appendChild(iframe);

最近, Nicholas C. Zakas 文章《Iframes, onload, and document.domain》的评论中 Christopher 提供了一个新的判断方法(很完美):

var iframe = document.createElement("iframe");
iframe.src = "http://www.planabc.net";

if (iframe.attachEvent){
    iframe.attachEvent("onload", function(){
        alert("Local iframe is now loaded.");
    });
} else {
    iframe.onload = function(){
        alert("Local iframe is now loaded.");
    };
}

document.body.appendChild(iframe);

几点补充说明:

  1. IE 支持 iframe 的 onload 事件,不过是隐形的,需要通过 attachEvent 来注册。
  2. 第二种方法比第一种方法更完美,因为 readystatechange 事件相对于 load 事件有一些潜在的问题。

没有评论讨论闭包传入参数:window & undefined

2010年5月21日

引言

最常见的闭包 (Closure) 范式大家都很熟悉了:

(function() {
// ...
})();

很简单,大家都在用。但是,我们需要了解更多。
首先,闭包是一个匿名函数 (Anonymous function), 即是 (function() {}) 这部分。之所以要给 function 添加括弧是为了让它形成一个表达式 (expression), 有了表达式,并且确定它的类型是个函数 (Function 实例), 就可以直接调用它。所以,后面的一对括弧是可以工作的,它的意义是:我要调用 (call) 这个函数。

既然是函数调用,那就可以像一般的函数那样,在调用时传入参数。这就是本次讨论的话题。

传入 window 参数

 

(function(win) {
// ...
})(window);

这样做最直观的好处是书写便利:少写几个字。你可以在闭包内任何地方使用 win, 它都会指向 window 对象。另外,它有利于压缩减少最终代码的体积,经过压缩后 (如 Google Closure Complier), 所有的 win 都会被替换成形如 a 这样的简单变量。win 用得越多,减少的字节数也越多。

不过,便利的同时也会带来陷阱。在 IE 上,window 总是指向当前窗口对象,这个没有问题,但是在某些场景下,使用闭包内的 win 变量会导致拒绝访问错误 (Access denied). 重现方式大致是这样的:当页面引用其他域名的脚本,并且该脚本调用了闭包内的 window.document, 而且这个闭包代码是来自另一个域名的脚本。在这种情况下,使用 win 会保持对 window 最早的引用,通过另一个域的脚本访问 win 会导致 IE 认为脚本产生了跨越冲突,从而拒绝了对 win.document 的访问。解决办法是不使用形参 win, 而是直接使用 window. 需要说明的是,给闭包传入 document 也会导致 IE 出现同样的问题。

传入 undefined

其实把 undefined 作为形参就,实参就可以不用传了,因为 JavaScript 中访问未传入的参数就会得到 undefined. 因此,你可以这样写:

(function(undefined) {
// ...
})();

和上面的讨论一样,你可以在闭包内任何地方使用 undefined, 可以少写几个字(如果把 undefined 换成更短的名字),也可以在减少压缩后体积。

另一个的优势是,你可以认为它是个变量,把它当变量来使用,它的值恒等于 (===) 真正的 undefined. 当外部代码意外地定义了 undefined 的时候——不常见,但确实可能会发生——你可以正常地使用真正的 undefined, 而不会被外部的 undefined 意外影响. 这是由 JavaScript 作用域规则决定的。
无论是否使用这个 undefined 参数,都应该避免使用 undefined 的字符串常量,如:

if(typeof myVar === 'undefined') {
// bad part...
}

因为如果你把字符串写错了,机器不会告诉你,而且会产生一个难以检查出来的bug. 幸运的是,对于 JavaScript 来说,JsLint 可以帮你做这个校验。当 myVar 已定义的时候(通过形参或 var 声明),上面的代码改成这样会更易于调试:

if(myVar === undefined) {
// good part...
}

结论

从上面两个例子来看,我们建议不要传入 window, 但是可以安全地使用第二种方式 (写 undefined 形参);我们还要尽量避免使用字符串常量。
最后,最重要的是,这只是两个特定对象和类型的讨论,举一反三,你会更了解 JavaScript

转自阿里UED:http://ued.alipay.com/2010/05/using-window-and-undefined-as-parameter-in-closure/

7 条评论WEB标准化交流会第七期-人人都是”架构”师

2010年4月24日

今天很荣幸的第三次的参加了WEB标准化交流会
地点是在在北京航空航天大学的第八会议室,这次交流会改变了以往的圆桌讨论方式,改为分享的方式,今天的两场分享都很精彩 第一场是微软的IE9分享,第二场是周爱民老师的前端架构实战

WEB标准化交流会让我认识了不少新朋友、今天更巧的是遇到了一年前项目合作过的同事:)

IE9的分享 重点在于IE系列终于迈向标准化 并且将GPU引入浏览器引擎,对于渲染速度和性能大大提升,同时透露出XP下无论哪个浏览器都是无法使用GPU加速的,虽然不知道这个说法的可信性,但是这次IE的预览,还是有一些收获的,至少让我们看到了浏览器越来越标准,当然更重要的是kill IE6

第二场爱民老师的分享让我比较有收获,几个方面吧

1.解决问题的思路-共性、本质,找到问题的根源
现场的例子:以为运营说需要在这里加一个按钮,他的需求真的是要多加一个按钮么?实际上可能是觉得原来按钮的位置并不合适
2.系统框架、框架、库、应用的概念
说实话,听的确实有些模糊,不过两个例子很精彩,由浅入深的,讲解了是如何一步一步的抽象出最终的系统框架。
从我的理解,库是相互没有依赖关系的,框架是来将库进行一个抽象关联,而系统框架,是更本质的抽象出了某一类业务的底层逻辑包括一些必须的数据和逻辑关联

给我印象比较深的一张图片如下:

当我们更多的关注于插件机制、组建机制、消息机制的时候、我们更应该从需求变更、版本升级、产品整合的视角来看待他们的本质

而我的观点是-人人都是”架构”师

为什么这么说呢?哈,首先我所说的架构是加了引号的

我理解的”架构”呢,更贴近我们的生活,工作,架构可大可小,”系统架构师”可能我们确实需要很多积累、天赋,而我们要把架构的意识引入到我们的日常生活中来

几个例子:
1.职业规划 是不是架构?
2.当我们保存站点文件,站点文件的目录是不是架构?
3.CSS的reset、grid、form等算不算架构呢?
4.我们经常用js写的weiget又算不算架构呢?
……
我相信在我们的生活、工作中、架构无所不在-人人都是”架构”师