以下分别是用递归和两种循环对斐波那契数列的简单实现。(结果仅供参考)
递归的模式:
function Fibonacci(num){
if(num <= 2){
return 1;
}else{
return Fibonacci(num - 1) + Fibonacci(num - 2)
}
}
var counter1 = new Counter();
Fibonacci(30);
counter1.show()
//Firefox 下结果为413毫秒
While循环的模式:
function FibonacciWhile(number){
if(number>2){
var num1=num2=1,times=number-2,i=1;
while(i<=times){
result = num1+num2;
num1 = num2;
num2 = result;
i++;
}
return result;
}else if(number>0){
return 1;
}
}
var counter2 = new Counter();
FibonacciWhile(3000000);
counter2.show()
//Firefox 下结果为530毫秒
For循环的模式:
function FibonacciFor(n){
if (n > 2) {
for (var i=1,f0=1,f1=1,times=n-2; i <= times; i++) {
currentFib = f0 + f1;
f0 = f1;
f1 = currentFib;
......
自己写的一个简易计时器,能记算代码的执行时间,还可以拿来测试代码的执行效率。
function Counter(){
this.start();
}
Counter.prototype.getTime = function(){
var time = new Date();
return time.getSeconds()*1000+time.getMilliseconds();
}
Counter.prototype.start = function(){
this.counting = true;
this.startTime = this.getTime();
}
Counter.prototype.stop = function(){
if(this.counting == true){
this.counting = false;
this.stopTime = this.getTime();
}
}
Counter.prototype.show = function(){
this.counting==true && this.stop();
this.time = this.stopTime-this.startTime;
document.write('执行代码花费了 '+this.time+' 毫秒<br>');
this.start();
}
使用示例如下:
var myCounter = new Counter();
for(var i=0;i<500;i++){
document.write('|');
}
myCounter.show();
var myCounter2 = new Counter();
document.write('<br>');
myCounter2.start(); //重新开始计时
for(var i=0;i<500;i++){
docu ......
JavaScript 框架比较
显著增强 JavaScript 开发的框架概览
Joe Lennon, 软件开发人员, 自由职业者
简介: 现代 Web 站点和 Web 应用程序倾向于依赖大量客户端 JavaScript 来提供丰富的交互功能,尤其是异步 HTTP 请求的出现使得不刷新页面就可以从服务器端脚本或数据库系统返回数据或响应。在本文中,您将了解如何通过 JavaScript 框架更轻松、更快速地创建具有高度交互性和响应性的 Web 站点和 Web 应用程序。
简介
JavaScript 是面向对象的脚本语言,长期以来用作 Web 浏览器应用程序的客户端脚本接口。JavaScript 让 Web 开发人员能以编程方式处理 Web 页面上的对象,并提供了一个能够动态操作这些对象的平台。在最初引入 JavaScript 时,通常只用于提供 Web 页面上的一些不重要的特性,如时钟功能和浏览器状态栏中的滚动文本等。另一个常见的特性是 “rollover link”,就是当用户将鼠标移到图片或文本链接上时,图片或文本链接的颜色会改变。然而,近年来,随着 Asynchronous JavaScript and XML (Ajax) 概念将基于 Web 的编程的交互性提升到一个新高度,JavaScript 也变得越来越重要。在出现 Ajax 之前,所有服务器端处理或数据库访问都需要 &ldq ......
研究了半天,不过貌似还是只能在IE上实现,其他浏览器不支持EMBED 标签
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>用javascript制作超链接的背景音效</title>
<script language="JavaScript" type="text/JavaScript">
<!--
function controlSound(action)
{
var i; method = "";
var sndObj = document.getElementById("music");
if (sndObj != null)
{
if (navigator.appName == 'Netscape')
method = "play";
else
{
if (window.MM_WMP == null)
{
window.MM_WMP = false;
for(i in sndObj)
{
if (i == "ActiveMovie")
{
window.MM_WMP = true;
//alert("1");
......
父窗口中有三种方式打开子窗口:
1:
window.open(URL,windowName,parameters);
2:
alert(""); //弹出信息提示对话框
confirm(""); //弹出信息确认对话框
prompt(""); //具有交互性质的对话框
3:
//创建模态你对话框
window.showModalDialog(sURL,vArguments,sFeatures)
//创建非模态对话框
window.showModelessDialog(sURL,vArguments,sFeatures)
父窗口与子窗口的值传递:
在子窗口中通过:window.dialogArguments获得父窗口中的值,
通过window.returnValue去传值给父窗口。
//通过子窗口提交父窗口中的表单:form1,提交后执行查询操作
var parent=window.dialogArguments;
parent.document.form1.action="QueryInfor.jsp";
parent.submit();
在父窗口中:
parasent.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<script type="text/javascript">
function showDialog(){
var obj = new Object();
obj.name="hah";
var a = windo ......
代码主要是操作cookie的两个函数:一个是setCookie用于设置cookie的值,另外一个是getCookie 用于取cookie的值,实现了简单的cookie存取操作,很简单,代码如下:
<mce:script language="JavaScript" type="text/javascript"><!--
function setCookie(name,value)
{
//用于存储赋值给document.cookie的cookie格式字符串
var str=name+"="+escape(value);
str+="; path="+"/"; //设置访问路径
//alert(str);
document.cookie=str;
}
function getCookie(name){
var cookieArray=document.cookie.split("; "); //得到分割的cookie名值对
var cookie=new Object();
for(var i=0;i<cookieArray.length;i++){
var arr=cookieArray[i].split("="); //将名和值分开
if(arr[0]==name)return unescape(arr[1]); //如果是指定的cookie,则返回它的值
}
return "";
}
setCookie("url","http://www.hiccphp.com");
alert(getCookie("url"));
// --></mce:script> ......