1、时钟

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Javascript时钟</title>
<script type="text/javascript">
function currenttime(){
setInterval(function (){
var now = new Date();
var str ='';
str += now.getYear()+1900+'年';
str += now.getMonth()+1+'月';
str += now.getDate()+'日';
str += now.getHours()+'时';
str += now.getMinutes()+'分';
str += now.getSeconds()+'秒';
document.getElementById('left').innerHTML=str;
},1000);
}
</script>
</head>
<body>
<p>
<input type="button" value="当前时间" onclick="currenttime();"/>
</p>
<h2 id="left"></h2>
</body>
</html>

此处出现Cannot set property 'innerHTML' of null 错误,原因是设置的编号与实际的编号不符,少了单引号。

2、创建动态样式

使用DOM样式对象创建一个允许控制页面文本颜色的页面。

style.js

function changehead(){
i=document.form1.heading.selectedIndex;
headcolor = document.form1.heading.options[i].value;
document.getElementById("head1").style.color=headcolor;
} function changebody(){
i=document.form1.body.selectedIndex;
doccolor = document.form1.body.options[i].value;
document.getElementById("p1").style.color=doccolor;
}

注意:在函数内声明创建一个外围变量名相同的变量时,必须使用var关键字

ControlStyle.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Controlling Styles with JavaScript</title>
<script type="text/javascript" src="styles.js"></script>
</head>
<body>
<h1 id="head1">Controlling Styles with JavaScript</h1>
<hr>
<p id="p1">
Select the color for paragrahs and heading using the form below.
The colors you specified will be dynamically changed in this document.
The change occurs as soon as you changge the value iof either of the drop-down lists in the form.
</p> <form name="form1">
<b>Heading color:</b>
<select name="heading" onchange="changehead();">
<option value="black">Black</option>
<option value="red">Red</option>
<option value="blue">Blue</option>
<option value="green">Green</option>
<option value="yellow">Yellow</option>
</select>
<br>
<b>Body text color:</b>
<select name="body" onchange="changebody();">
<option value="black">Black</option>
<option value="red">Red</option>
<option value="blue">Blue</option>
<option value="green">Green</option>
<option value="yellow">Yellow</option>
</select>
</form>
</body>
</html>

3、冒泡排序

var a=[5,-6,0,124,123,45,98];
var flag=false;
for(var i=0;i< a.length-1;i++){
for(var j=0;j< a.length-1-i;j++){
if(a[j]>a[j+1]){
var temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
flag=true;
}
}
if(flag)
flag=false;
else
break;
}
for(var i=0;i< a.length;i++){
document.writeln(a[i]+"&nbsp;");
}

4、二分查找

<script type="text/javascript">
var arr = [1,4,53,343,1234];
function binarySearch(arr,findVal,leftIndex,rightIndex){
//前提 防止无穷递归
if(leftIndex>rightIndex){
document.writeln("找不到");
return;
}
//找到中间值
var midIndex=Math.floor((leftIndex+rightIndex)/2);
var midVal=arr[midIndex];
if(midVal>findVal){
//左边找
binarySearch(arr,findVal,leftIndex,midIndex-1);
}else if(midVal<findVal){
binarySearch(arr,findVal,midIndex+1,rightIndex);
}else{
document.writeln("找到下标为"+midVal);
return;
}
}
binarySearch(arr,4,0,arr.length-1);
</script>

5、简单的在方框内移动,要求能用按钮移动,碰到边界停下

Mario.html

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="Mario.css" type="text/css"/>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
function Mario(){
this.x=0;
this.y=0; this.move=function(direct){
switch (direct){
case "up":
var mymario = document.getElementById('mymario');
var top= mymario.style.top;
top=parseInt(top.substr(0,top.length-2));
if(top>0)
mymario.style.top=(top-10)+"px";
break;
case "left":
var mymario = document.getElementById('mymario');
var left= mymario.style.left;
left=parseInt(left.substr(0,left.length-2));
if(left>0)
mymario.style.left=(left-10)+"px";
break;
case "down":
var mymario = document.getElementById('mymario');
var top= mymario.style.top;
top=parseInt(top.substr(0,top.length-2));
if(top<360)
mymario.style.top=(top+10)+"px";
break;
case "right":
var mymario = document.getElementById('mymario');
var left= mymario.style.left;
left=parseInt(left.substr(0,left.length-2));
if(left<450)
mymario.style.left=(left+10)+"px";
break;
}
}
} var mario=new Mario();
function Mariomove(direct){
switch (direct){
case "up":
mario.move("up"); break;
case "left":
mario.move("left"); break;
case "down":
mario.move("down"); break;
case "right":
mario.move("right"); break;
}
}
</script>
</head>
<body oncontextmenu="return false" onselectstart="return false">
<div class="gamediv">
<img id="mymario" style="width: 50px; left:450px; top:340px; position:absolute;" src="my.jpg" alt=""/>
</div>
<table class="control">
<tr>
<td colspan="3">游戏键盘</td>
</tr>
<tr>
<td></td>
<td><input type="button" value="up" onclick="Mariomove('up')"/></td>
<td></td>
</tr>
<tr>
<td><input type="button" value="left" onclick="Mariomove('left')"/></td>
<td></td>
<td><input type="button" value="right" onclick="Mariomove('right')"/></td>
</tr>
<tr>
<td></td>
<td><input type="button" value="down" onclick="Mariomove('down')"/></td>
<td></td>
</tr> </table>
</body>
</html>

Mario.css

.gamediv{
width: 500px;
height: 400px;
background-color: silver;
position: relative;
}
.control{
width: 200px;
height: 200px;
border: none;
}

6、正则验证email格式

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>正则验证Email格式</title>
<script type="text/javascript">
function validateInput(){
var myText = document.getElementById("myText");
var email=myText.value;
var emailReg=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
if(emailReg.test(email)){
alert("success!");
}else{
alert("检验失败!");
}
}
</script>
</head>
<body style="text-align: center">
<input type="text" value="" id="myText" /> <br/><br/>
<input type="button" value="提交" id="myBtn" onclick="validateInput();"/>
</body>
</html>

Javascript练习的更多相关文章

  1. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  2. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...

  3. Javascript 的执行环境(execution context)和作用域(scope)及垃圾回收

    执行环境有全局执行环境和函数执行环境之分,每次进入一个新执行环境,都会创建一个搜索变量和函数的作用域链.函数的局部环境不仅有权访问函数作用于中的变量,而且可以访问其外部环境,直到全局环境.全局执行环境 ...

  4. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  5. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

  6. 《Web 前端面试指南》1、JavaScript 闭包深入浅出

    闭包是什么? 闭包是内部函数可以访问外部函数的变量.它可以访问三个作用域:首先可以访问自己的作用域(也就是定义在大括号内的变量),它也能访问外部函数的变量,和它能访问全局变量. 内部函数不仅可以访问外 ...

  7. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  8. JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome

    今天为大家分享一下我自己制作的浏览器滚动条,我们知道用css来自定义滚动条也是挺好的方式,css虽然能够改变chrome浏览器的滚动条样式可以自定义,css也能够改变IE浏览器滚动条的颜色.但是css ...

  9. JavaScript进阶之路(一)初学者的开始

    一:写在前面的问题和话 一个javascript初学者的进阶之路! 背景:3年后端(ASP.NET)工作经验,javascript水平一般般,前端水平一般般.学习资料:犀牛书. 如有误导,或者错误的地 ...

  10. 梅须逊雪三分白,雪却输梅一段香——CSS动画与JavaScript动画

    CSS动画并不是绝对比JavaScript动画性能更优越,开源动画库Velocity.js等就展现了强劲的性能. 一.两者的主要区别 先开门见山的说说两者之间的区别. 1)CSS动画: 基于CSS的动 ...

随机推荐

  1. .NET HttpWebRequest/WebClient网络请求第一次很慢解决方案

    不使用代理: <?xml version="1.0" encoding="utf-8" ?> <configuration> <s ...

  2. 通过js给android控件WebView设padding

    项目中有个界面是用来显示一个网页的,很简单,放个WebView就ok了,可是返回按钮放在哪 ,ui的设计是在底部显示一个半透明的条,左边有一个返回按钮.这个条显示在内容上面.我有一个担心,就是要是最下 ...

  3. css Animation初体验

    目前有越来越多的网站都使用animation,无论他们是用GIF,SVG,WebGL,视频背景或者其他形式展示.适当地使用动画会让网站更生动,互动性更好,为用户增加一个额外的反馈和体验层. 在本教程中 ...

  4. Java准确地获取本地IP地址

    问题 用Java获取本机IP地址,需要处理: 1. 多块网卡. 2. 排除loopback设备.虚拟网卡 看似简单的代码,写起来还是要小心一些的. 方案 HBase客户端获取本机IP的代码提供了一个很 ...

  5. mysql order by in 的字符顺序

    //MySQL 语句SELECT * FROM `MyTable`WHERE `id` IN (11,1,111) ORDER BY FIELD(`id`, 11,1,111); laravel 框架 ...

  6. Redis setNX 实现分布式锁(重复数据插入可用其来实现排他锁)

    使用Redis的 SETNX 命令可以实现分布式锁,下文介绍其实现方法. SETNX命令简介 命令格式 SETNX key value 将 key 的值设为 value,当且仅当 key 不存在. 若 ...

  7. iOS9 3DTouch开发

    在iOS 9中,新iPhone将第三维度添加到了用户界面. 用户现在可以用力摁下主屏按钮来快速调出应用提供的功能菜单. 在应用中,用户现在可以用力摁下视图以查看更多内容的预览并且快速访问一些功能. 想 ...

  8. test 2016-12-6

    //$token = drupal_get_token('abc'); //dpm(drupal_valid_token($token,'abc')); //1 //从任何字符串生成一个密码形式的字符 ...

  9. 发生tcp丢包(拥堵、超时)重传

    可以根据wireshark的Seq序列号和Ack序列号来进行详细分析. 可见,网络丢包(可能是网络拥堵.也有可能是骨干网上有"防火墙"故意随机丢包,因为这个服务器的IP放在国外)对 ...

  10. mmorpg手游中的战斗系统

    目前的项目是一款mmorpg手游, 非常不幸的是,当前战斗系统的实现非常脆弱, 也毫无技巧可言.具体存在如下问题: 1.战斗层逻辑与自动战斗AI逻辑混在一起, 互相纠缠. 2.战斗层自身逻辑混乱不堪, ...