JavaScript
第一个javascript程序
内部
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>javascript</title>
<script type="text/javascript">
alert("hello javascript")
</script>
</head>
<body>
</body>
</html>
外部调用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>javascript</title>
<script type="text/javascript" src="javascript.js"></script>/*引用js*/
</head>
<body>
</body>
</html>
alert("hello javascript")
var x;
x =123;
alert(x+1);
var x;
x ="123";
alert(x+1);
var x;
x ="123";
console.log(x+1);
自定义函数
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>javascript</title>
<script type="text/javascript" src="javascript.js"></script>
</head>
<body>
</body>
</html>
function add(){
alert("999")
}/*创建函数*/
add()/*使用函数*/
function add(n1,n2){
alert(n1+n2);
}/*创建函数 n1,n2是形参*/
add(3,4);/*使用函数 3,4是实参*/
function add(n1,n2){
var n3;
alert(n1+n2);
return n3;
}/*创建函数 n1,n2是形参*/
var num=add(5,5);
alert(num);
var num1 = function(n1,n2){
var n3=n1+n2;
return n3;
}
var n=num1(10,20);
alert(n);
数据类型及类型转换
- 定义的时候不区分数据类型,只有在使用的时候区分
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>javascript</title>
<script type="text/javascript" src="javascript.js"></script>
</head>
<body>
</body>
</html>
var str="123" ;/*字符*/
console.log(str+1); /*为转换前加1*/
console.log(parseInt(str)+1); /*转换后加1*/
var str="123"; /*字符*/
console.log(str*1+1); /*乘后自动转换*/
console.log(parseInt(str)+1); /*转换后加1*/
var str="abc" ;/*字符*/
console.log(parseInt(str)) ;
var str="abc" ;/*字符*/
console.log(isNaN(str)) ;
var str="123" ;
console.log(isNaN(str));
var str="123";
if(isNaN(str)==false){
console.log(parseInt(str));
}else{
console.log("不能转换成数字");
str=0;
}
console.log(str);
var str="abc";
if(isNaN(str)==false){
console.log(parseInt(str));
}else{
console.log("不能转换成数字");
str=0;
}
console.log(str);
//如果是数字,isNaN 返回false
//如果不是数字,isNaN 返回true
其他类型转换
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>javascript</title>
<script type="text/javascript" src="javascript.js"></script>
</head>
<body>
</body>
</html>
var str="100abc";
console.log(parseInt(str));/*忽略结尾字母进行转换*/
console.log(parseFloat(str));/*忽略结尾字母进行转换*/
console.log(new Number(str));
var str="110.110";
console.log(parseInt(str));
console.log(parseFloat(str));
console.log(new Number(str));
var str="abc100";/*字母开头无法转换*/
console.log(parseInt(str));
console.log(parseFloat(str));
console.log(new Number(str));/*优先使用该转换*/
var str=null;
console.log(parseInt(str));
console.log(parseFloat(str));
console.log(new Number(str));
var str="";
console.log(Boolean(str));
var str=null;
console.log(Boolean(str));
var str=" ";
console.log(Boolean(str));
var str="abc";
console.log(Boolean(str));
var str=123;
console.log(Boolean(str));
var str=0;
console.log(Boolean(str));
作用域
var n=100;//全局变量
function fun1(){
var n1=50;//局部变量
n=200;//使用全局变量n
}
function fun2(){
n=n-50;//使用的全局n
}
function fun3(){
console.log(n);
console.log(n1);//因为n1是局部变量所以报错
}
fun1();
fun2();
fun3();
比较运算符
var x=10;
var flag=x>50;
console.log(flag);
var x=10;
var flag=x<50;
console.log(flag);
var x=1;
var y=2;
var z=3;
var flag=x<10 && y<5 && z>20;//任何一个不满足条件为false
console.log(flag);
var x=1;
var y=2;
var z=3;
var flag=x<10 || y<5 || z>20; //任何一个满足条件为true
console.log(flag);
var x=1;
var y=2;
var z=3;
var flag=(x<10) || y>5 && z>20;
console.log(flag);
var x=1;
var y=2;
var z=3;
var flag=(x<10) && y>5 && z>20;
console.log(flag);
var x=1;
var y=2;
var z=3;
var str=x>10?"大于":"小于";
console.log(str);
var x=100;
var y=2;
var z=3;
var str=x>10?"大于":"小于";
console.log(str);
程序控制语句
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>javascript</title>
<script type="text/javascript" src="javascript.js"></script>
</head>
<body>
</body>
</html>
条件控制语句
var n=10;
var str;
if(n>10){
str="n>10";
}else{
str="n<=10";
}
console.log(str);
var n=10;
var str;
if(n>10){
str="n>10";
}else if(n<10){
str="n<10";
}else{
str="n=10"
}
console.log(str);
多条件控制语句
成绩100 显示满分,大于90显示优秀,大于70和80显示良好,大于60显示及格,其他不及格
var myscore=95;
var str;
var n=parseInt(myscore/10);
switch (n) {
case 10:
str="满分"
break;
case 9:
str="优秀"
break;
case 8:
case 7:
str="良好"
break;
case 6:
str="及格"
break;
case 5:
case 4:
case 3:
case 2:
case 1:
str="不及格"
break;
}
console.log(str);
var myscore=50;
var str;
var n=parseInt(myscore/10);
switch (n) {
case 10:
str="满分"
break;
case 9:
str="优秀"
break;
case 8:
case 7:
str="良好"
break;
case 6:
str="及格"
break;
default:
str="不及格"
break;
}
console.log(str);
循环类控制语句
for while do-while 循环
//1+2+3+4+5+.....+100=5050
var i;
var sum=0;
for(i=0;i<=100;i++){
sum=sum+i;
}
console.log(sum);
var i;
var sum=0;
for(i=0;i<=100;i++){
if(i % 2 == 0){
continue;
}//计算奇数的和,continue:一旦满足了if条件 continue后面的就不执行了
sum=sum+i;
}
console.log(sum);
//1+2+3+4+5+.....+100=5050
var i;
var sum=0;
for(i=0;i<=100;i++){
if(i % 2 != 0){
continue;
}//计算偶数的和,continue:一旦满足了if条件 continue后面的就不执行了
sum=sum+i;
}
console.log(sum);
var i;
var sum=0;
for(i=0;i<=100;i++){
if(i % 2 == 0){
continue;
}
if(sum>=1000){
break;
}
sum=sum+i;
}
console.log(sum);
//1+2+3+4+5+.....+100=5050
var i=0;
var sum=0;
while (i<=100) {
sum=sum+i;
i++;
}
console.log(sum);
内置函数
字符串截取
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>javascript</title>
<script type="text/javascript" src="javascript.js"></script>
</head>
<body>
</body>
</html>
var str="520134199906061234"
console.log(str.substr(0,3));//0开始3长度
console.log(str.substring(6,10));//0开始10结束
var n=console.log(str.charAt(16));//取对应位置的字符
if(n%2==0){
console.log("女");
}else {
console.log("男");
}
console.log(str.length);//字符串长度
console.log(str.indexOf(3));//找到第一次出现3的位置
console.log(str.indexOf(3,5));//查找3从位置5开始找到第一个3
数组操作
var str="aa,bbb,123,cc,dd,55";
var arr=str.split(",");
console.log(arr);
console.log(arr[0]);//按位置查找
console.log(arr[3]);
console.log(str.concat("66","00","abc"));//连接
console.log(str.concat(",66",",00",",abc"));
console.log(arr.concat("66","00","abc"));
console.log(str.replace("aa","替换"));//替换第一个
日期操作
var d1=new Date();//获取当前时间
var d2=new Date("2023-5-30");//自定义时间
console.log(d1)
console.log(d2)
console.log(d1.getDate());//当前天数
console.log(d1.getMonth()+1);//月 从0开始, 0-11
console.log(d1.getFullYear());//年
console.log(d1.getHours());//时
console.log(d1.getMinutes());//分
console.log(d1.getSeconds());//秒
var n=d2.getTime()-d1.getTime();//计算d1与d2相差多少天
console.log(parseInt(n/(24*3600*1000)));
//日期格式化
function Fun_Fmtdate(){
var d1=new Date();
var yyyy,mm,dd,hh,mi,ss;
var time;
yyyy=d1.getFullYear();
mm=d1.getMonth()+1;
dd=d1.getDate();
hh=d1.getHours();
mi=d1.getMinutes();
ss=d1.getSeconds();
time=yyyy+"-"+mm+"-"+dd+"-"+hh+":"+mi+":"+ss;
return time;
}
console.log(Fun_Fmtdate());
数值
var n=3.1415926;
console.log(Math.round(n));//取整
console.log(n.toFixed(2));//保留2位小数
console.log(Math.min(1,2,3,4,5));//最小值
console.log(Math.max(1,2,3,4,5));//最大值
console.log(Math.abs(-3));//绝对值
数组
//声明或创建一个不指定长度的数组,又称实例化创建
var kk1=new Array();
console.log(kk1);
//声明或创建一个数组并指定长度的数组
var kk2=new Array(5);
console.log(kk2);
//声明或创建一个带有默认值的数组
var kk3=new Array(1,2,3,4,5,6);
console.log(kk3);
//创建一个数组并赋值的简写,又称隐式创建数据
var kk4=[1,2,3,4,5,6];
console.log(kk4);
var kk=[1,2,3,4,5,6];
//数组赋值、字符下标、数组遍历
console.log(kk[0]);
for(var i in kk){
console.log(i);
}//遍历
表单
单击弹窗
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>javascript</title>
<script type="text/javascript" src="javascript.js"></script>
</head>
<body>
<form>
<label>用户名</label>
<input type="text" id="username"name="username">
<input type="button" id="按钮" onclick="show1()" value="按钮"/>
<!--onclick单击后执行js里面的show1-->
</form>
</body>
</html>
function show1(){
alert("123456")
}
单击填入
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>javascript</title>
<script type="text/javascript" src="javascript.js"></script>
</head>
<body>
<form>
<label>用户名</label>
<input type="text" id="username"name="username">
<input type="button" id="按钮" onclick="show1()" value="按钮"/>
<!--onclick单击后执行js里面的show1-->
</form>
</body>
</html>
function show1(){
document.getElementById("username").value="test";
}//按元素id获取属性,同时对value进行设置
页面加载
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>javascript</title>
<script type="text/javascript" src="javascript.js"></script>
</head>
<body onload="show1()"><!--页面刷新执行show1-->
<form>
<label>用户名</label>
<input type="text" id="username"name="username">
<input type="button" id="按钮" onclick="show1()" value="按钮"/>
<!--onclick单击后执行js里面的show1-->
</form>
</body>
</html>
function show1(){
document.getElementById("username").value="test";
}//按元素id获取属性,同时对value进行设置
单选按钮
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>javascript</title>
<script type="text/javascript" src="javascript.js"></script>
</head>
<body>
<form>
<label>用户名</label>
<input type="text" id="username"name="username"><br>
<input type="radio" name="xb" value="1" checked="checked">男<!--默认选中-->
<input type="radio" name="xb" value="0">女<br><!--单选按钮-->
<input type="button" id="按钮" onclick="show1()" value="按钮"/>
<!--onclick单击后执行js里面的show1-->
</form>
</body>
</html>
function show1(){
document.getElementById("username").value="test";//按元素id获取属性,同时对value进行设置
var xb=document.getElementsByName("xb");//按元素name获取属性
var xbtest;
if(xb[0].checked){
xbtest=xb[0].value;
}else {
xbtest=xb[1].value;
}//单击按钮弹窗 选择男1选择女0
alert(xbtest);
}
列表框
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>javascript</title>
<script type="text/javascript" src="javascript.js"></script>
</head>
<body onload="ymd()">
<form>
<select name="yyyy" id="yyyy"></select>年
<select name="mm" id="mm"></select>月
<select name="dd" id="dd"></select>日
</form>
</body>
</html>
function ymd(){
var yyyy=document.getElementById("yyyy");//获取id=yyyy的表单元素
var mm=document.getElementById("mm");
var dd=document.getElementById("dd");
var date=new Date();
var year=parseInt(date.getFullYear());//获取当前年份
for (var i=1999;i<=year;i++){
yyyy.options.add(new Option(i,i));
}
for (var i=1;i<=12;i++){
mm.options.add(new Option(i,i));
}
for (var i=1;i<=31;i++){
dd.options.add(new Option(i,i));
}
}
简写
function ymd(){
var yyyy=document.getElementById("yyyy");//获取id=yyyy的表单元素
var mm=document.getElementById("mm");
var dd=document.getElementById("dd");
var date=new Date();
var year=parseInt(date.getFullYear());//获取当前年份
initselect(yyyy,1999,year);
initselect(mm,1,12);
initselect(dd,1,31);
}
//给列表框赋值,传递三个参数,表单元素,开始值,结束值
function initselect(obj,start,end){
for(var i=start;i<=end;i++){
obj.options.add(new Option(i,i));
}
}
三级联动闰年大小月优化
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>javascript</title>
<script type="text/javascript" src="javascript.js"></script>
</head>
<body onload="ymd()">
<form>
<select name="yyyy" id="yyyy" onchange="selectymd()"></select>年
<select name="mm" id="mm" onchange="selectymd()"></select>月<!--onchange改变事件-->
<select name="dd" id="dd"></select>日
</form>
</body>
</html>
function ymd(){
var yyyy=document.getElementById("yyyy");//获取id=yyyy的表单元素
var mm=document.getElementById("mm");
var dd=document.getElementById("dd");
var date=new Date();
var year=parseInt(date.getFullYear());//获取当前年份
initselect(yyyy,1999,year);
initselect(mm,1,12);
initselect(dd,1,31);
//列表默认选中某一个条目
var n=yyyy.length;//获取长度
yyyy.selectedIndex=Math.round(n/2);
//将某个条目数设置为零,效果=删除
// dd.options.length=0;
}
//给列表框赋值,传递三个参数,表单元素,开始值,结束值
function initselect(obj,start,end){
for(var i=start;i<=end;i++){
obj.options.add(new Option(i,i));
}
}
//闰年大小月设置
function selectymd(){
var yyyy=document.getElementById("yyyy");
var mm=document.getElementById("mm");
var dd=document.getElementById("dd");
var m=parseInt(mm.value);
var dayend;
if(m==4 || mm==6 || m==9 || m==11){
dayend=30;
}else if (m==2) {
dayend=28;
y=parseInt(yyyy.value);
if((y%4==0 && y%100!=0)||y%400==0){
dayend=29;
}
}else{
dayend=31;
}
dd.options.length=0;
initselect(dd,1,dayend);
}
删除
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>javascript</title>
<script type="text/javascript" src="javascript.js"></script>
</head>
<body onload="ymd()">
<form>
<select name="yyyy" id="yyyy" onchange="selectymd()"></select>年
<select name="mm" id="mm" onchange="selectymd()"></select>月<!--onchange改变事件-->
<select name="dd" id="dd"></select>日
<input type="button" value="删除" onclick="deleteselect()">
</form>
</body>
</html>
function ymd(){
var yyyy=document.getElementById("yyyy");//获取id=yyyy的表单元素
var mm=document.getElementById("mm");
var dd=document.getElementById("dd");
var date=new Date();
var year=parseInt(date.getFullYear());//获取当前年份
initselect(yyyy,1999,year);
initselect(mm,1,12);
initselect(dd,1,31);
//列表默认选中某一个条目
var n=yyyy.length;//获取长度
yyyy.selectedIndex=Math.round(n/2);
//将某个条目数设置为零,效果=删除
// dd.options.length=0;
}
//给列表框赋值,传递三个参数,表单元素,开始值,结束值
function initselect(obj,start,end){
for(var i=start;i<=end;i++){
obj.options.add(new Option(i,i));
}
}
//闰年大小月设置
function selectymd(){
var yyyy=document.getElementById("yyyy");
var mm=document.getElementById("mm");
var dd=document.getElementById("dd");
var m=parseInt(mm.value);
var dayend;
if(m==4 || mm==6 || m==9 || m==11){
dayend=30;
}else if (m==2) {
dayend=28;
y=parseInt(yyyy.value);
if((y%4==0 && y%100!=0)||y%400==0){
dayend=29;
}
}else{
dayend=31;
}
dd.options.length=0;
initselect(dd,1,dayend);
}
//删除列表框的某一个条目,按索引删除
function deleteselect(){
var dd=document.getElementById("dd");
dd.options.remove(1);//删除下标为1的
}
删除全部
function ymd(){
var yyyy=document.getElementById("yyyy");//获取id=yyyy的表单元素
var mm=document.getElementById("mm");
var dd=document.getElementById("dd");
var date=new Date();
var year=parseInt(date.getFullYear());//获取当前年份
initselect(yyyy,1999,year);
initselect(mm,1,12);
initselect(dd,1,31);
//列表默认选中某一个条目
var n=yyyy.length;//获取长度
yyyy.selectedIndex=Math.round(n/2);
//将某个条目数设置为零,效果=删除
// dd.options.length=0;
}
//给列表框赋值,传递三个参数,表单元素,开始值,结束值
function initselect(obj,start,end){
for(var i=start;i<=end;i++){
obj.options.add(new Option(i,i));
}
}
//闰年大小月设置
function selectymd(){
var yyyy=document.getElementById("yyyy");
var mm=document.getElementById("mm");
var dd=document.getElementById("dd");
var m=parseInt(mm.value);
var dayend;
if(m==4 || mm==6 || m==9 || m==11){
dayend=30;
}else if (m==2) {
dayend=28;
y=parseInt(yyyy.value);
if((y%4==0 && y%100!=0)||y%400==0){
dayend=29;
}
}else{
dayend=31;
}
dd.options.length=0;
initselect(dd,1,dayend);
}
//删除列表框的某一个条目,按索引删除
function deleteselect(){
var dd=document.getElementById("dd");
//dd.options.remove(1);//删除下标为1的
for(i=0;i<dd.length;i++){
dd.options.remove(i);
}//删除全部
}
图片与列表框
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>javascript</title>
<script type="text/javascript" src="javascript.js"></script>
</head>
<body onload="ymd(),initlogo()">
<form>
<select name="yyyy" id="yyyy" onchange="selectymd()"></select>年
<select name="mm" id="mm" onchange="selectymd()"></select>月<!--onchange改变事件-->
<select name="dd" id="dd"></select>日
<input type="button" value="删除" onclick="deleteselect()"><br>
<img id="logoimg" src="img/1.gif">
<select id="logo" onchange="selectlogo()"></select>
</form>
</body>
</html>
function ymd(){
var yyyy=document.getElementById("yyyy");//获取id=yyyy的表单元素
var mm=document.getElementById("mm");
var dd=document.getElementById("dd");
var date=new Date();
var year=parseInt(date.getFullYear());//获取当前年份
initselect(yyyy,1999,year);
initselect(mm,1,12);
initselect(dd,1,31);
//列表默认选中某一个条目
var n=yyyy.length;//获取长度
yyyy.selectedIndex=Math.round(n/2);
//将某个条目数设置为零,效果=删除
// dd.options.length=0;
}
//给列表框赋值,传递三个参数,表单元素,开始值,结束值
function initselect(obj,start,end){
for(var i=start;i<=end;i++){
obj.options.add(new Option(i,i));
}
}
//闰年大小月设置
function selectymd(){
var yyyy=document.getElementById("yyyy");
var mm=document.getElementById("mm");
var dd=document.getElementById("dd");
var m=parseInt(mm.value);
var dayend;
if(m==4 || mm==6 || m==9 || m==11){
dayend=30;
}else if (m==2) {
dayend=28;
y=parseInt(yyyy.value);
if((y%4==0 && y%100!=0)||y%400==0){
dayend=29;
}
}else{
dayend=31;
}
dd.options.length=0;
initselect(dd,1,dayend);
}
//删除列表框的某一个条目,按索引删除
function deleteselect(){
var dd=document.getElementById("dd");
//dd.options.remove(1);//删除下标为1的
for(i=0;i<dd.length;i++){
dd.options.remove(i);
}//删除全部
}
function initlogo(){
var logo=document.getElementById("logo");
for(i=1;i<=15;i++){
logo.options.add(new Option(i,i));
}
}
function selectlogo(){
var logo=document.getElementById("logo");
var n=logo.value;
var logoimg=document.getElementById("logoimg");
logoimg.src="img/"+n+".gif";
}
复选框
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>javascript</title>
<script type="text/javascript" src="javascript.js"></script>
</head>
<form>
<input type="checkbox" name="interest" value="1"/><label>游戏</label>
<input type="checkbox" name="interest" value="2"/><label>学习</label>
<input type="checkbox" name="interest" value="3"/><label>游泳</label>
<input type="checkbox" name="interest" value="4"/><label>爬山</label>
<input type="button" id="btn1" value="全选" onclick="checkinterest()">
<input type="button" value="反选" onclick="checkinterest1()">
</form>
</body>
</html>
var flag=true;
function checkinterest(){
var interest=document.getElementsByName("interest");
for(i=0;i<interest.length;i++){
interest[i].checked=flag;
}
if(flag){
document.getElementById("btn1").value="全不选";
}else {
document.getElementById("btn1").value="全选";
}
flag=!flag;//开关变量 第一次true 第二次fales
}
function checkinterest1(){
var interest=document.getElementsByName("interest");
for(i=0;i<interest.length;i++){
interest[i].checked=!interest[i].checked;
}
}
事件