javaWeb-day07-js

JavaScript简介

简称JS。JS运行在浏览器中,负责实现网页中的动画效果或者是实现表单校验等功能

引入方式

1、在script标签内部可以书写JS代码
2、通过script标签引入外部的JS文件
3、在元素上书写JS代码
01_引入JS.html

<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <!-- 引入JS的第一种方式, type属性可以省略 -->
   <script type="text/javascript">
      // 警告框
      //alert("引入JS的第一种方式...");
      //alert( 100+23 );
   </script>
   
   <!-- 引入js的第二种方式: 引入js文件 -->
   <script type="text/javascript" src="demo.js">
      //这里能否再书写JS代码? 不可以!!!, 写了也无法执行
      alert("如果这句话可以执行, 那我就直播吃饭..!")
   </script>
</head>
<body>
   <!-- 引入js的第三种方式: 直接在元素上书写js代码 -->
   <!-- onclick属性 用于为当前元素绑定点击事件, 
      当元素被点击时, 会立即触发onclick事件, 会立即执行所绑定的函数 -->
   <h1 onclick="alert('别点我~!')">Hello CGB2003!</h1>
   <h1 onclick="console.log( new Date() )">Hello CGB2003!</h1>
</body>
</html>

demo.js

// 在js文件中可以直接书写JS代码
alert( "引入JS的第二种方式..." );
JS语法
1.注释格式:

和Java注释符号相同

// 单行注释内容
/* 多行注释内容 */
2.数据类型

1.数值类型
数值底层都是浮点型,但是在处理和显示的过程中会自动的和整型进行转换。
2.字符串类型(string)
在JS中,字符串类型属于基本数据类型,字符串常量可以使用单引号或者使用双引号引起来
另外,JS中字符串类型有对应的包装对象(String),在需要时会自动的和包装对象进行转换
3.布尔类型(boolean)
布尔类型的值有两个,分别为true和false
4.undefined类型
undefined类型的值只有一个,就是undefined,表示变量未定义(但不是指变量没有声明)
5.null类型
null类型的值也只有一个,就是null,表示空值。可以作为函数的返回值,表示函数返回的是一个空的对象
注意:null和undefined类型的变量是不能调用函数或属性的,会抛异常
6.复杂数据类型
主要指对象(JS的内置对象、自定义的对象、函数、数组)

变量声明

JS中是通过var关键字声明变量,声明的变量是不区分类型,可以指向任意的数据

var x = 100;
x = "abc";
x = true;
x = [];
x = function(){}
x = new Object();
x = {};

另外,JS中多次声明同名的变量不会出现语法错误,例如:

/* 2.变量的定义 */
var s = "Hello"; // var s; s="Hello";
var s = 123; // var s; s=123; 第二次声明变量x没有生效
alert( s ); //123
JS运算符

和Java中的运算符大致相同

算术运算符: +-*/%++--
赋值运算符: =+=-=*=/=%=
比较运算符: ==!=>>=<<=
位运算符: &|
逻辑运算符: &&||   ( false && 表达式, true || 表达式 )
前置逻辑运算符: ! (not)
三元运算符: 表达式 ? 表达式 : 表达式
。。。
JS语句

和Java语句大致相同

02_JS语法示例1.html

<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <!-- 在script标签内部直接书写JS代码 -->
   <script type="text/javascript">
      /* JS的数据类型
      一、基本数据类型
         数值类型: 在JS底层都是浮点型
         字符串类型:  字符串值用单引号或双引号引起来
         布尔类型: true和false
         undefined: 表示声明了变量但没有为变量赋值, 值为undefined
         null: 表示空值, 可以作为函数的返回值, 表示函数返回的是一个空的对象
      二、复杂数据类型
         主要指对象(JS内置/自带对象、自定义对象、数组、函数等)
      */
      // undefined
      var x; //声明变量, 默认值是undefined
      //console.log( x ); //打印x的值为 undefined
      //console.log( typeof x ); //打印x的类型为undefined   
      
      /* JS的变量声明
      JS通过var关键字声明变量, 且声明的变量不区分类型, 可以指向任意数据
      JS中如果多次声明相同的变量, 不会出现错误, 而是发生值覆盖
       */
      var x = 100;
      console.log( typeof x );// x在此时的类型为 number
      x = "abc";
      console.log( typeof x );// x在此时的类型为 string
      x = new String("abc");
      console.log( typeof x );// x在此时的类型为 object
      x = false;
      console.log( typeof x );// x在此时的类型为 boolean
      x = []; //数组
      console.log( typeof x );// x在此时的类型为 object
      x = {}; //对象
      console.log( typeof x );// x在此时的类型为 object
      //---------------------------------------
      var y = 123;
      var y = "hello";
      console.log( "y===" + y );
   </script>
</head>
<body>
</body>
</html>

03_JS语法实例2.html

<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <script type="text/javascript">
      /* 案例1:if分支案例: 接收用户输入的成绩,判断成绩所属的等级
         80~100(包括80,也包括100) 优秀
         60~80(包括60,但不包括80) 中等
         0~60(包括0,但不包括60) 不及格
         其他值 输入有误*/
      var score = prompt( "在下面的输入框中输入成绩:", 150 ); //弹出一个消息输入框
      //var score = "35";
      console.log( "score="+score )
      if( score >= 80 && score <=100 ){
         alert("您的成绩属于: 优秀!");
      }else if( score >= 60 && score < 80 ){
         alert("您的成绩属于: 中等!");
      }else if( score >= 0 && score < 60 ){
         alert("您的成绩属于: 不及格!");
      }else{
         alert("您的输入有误!!");
      }
      /* 案例2:switch语句案例—实现一个简易的计算器:
      可以接收用户输入的两个数值和一个操作符(+、-、*、/),根据操作符号的不同,
      对两个数值执行不同的运算。*/
      var str = prompt("请输入两个数值和一个运算符, 用逗号分隔: ", "10,5,+");
      var strArr = str.split(","); //用逗号切割字符串,返回一个字符串数组
      var num1 = strArr[0]; //数值1
      num1 = parseFloat( num1 ); //将num1转成浮点型的数值, 再赋值给num1
      var num2 = strArr[1]; //数值2
      num2 = parseFloat( num2 ); //将num2转成浮点型的数值, 再赋值给num2
      var opt = strArr[2];  //运算符 +、-、*、/
      //console.log( num1+"---"+num2+"---"+opt );
      switch( opt ){
         case "+":
            alert( "两个数值的 和 为: "+ ( num1 + num2 ) );
            break;
         case "-":
            alert( "两个数值的 差 为: "+ ( num1 - num2 ) );
            break;
         case "*":  
            alert( "两个数值的 乘积 为: "+ ( num1 * num2 ) );
            break;
         case "/":  
            alert( "两个数值的 商 为: "+ ( num1 / num2 ) );
            break;
         default: 
            alert( "您的输入有误!" );
      }
      /* 案例3:for循环语句案例
      遍历1~100之间的所有整数,求1~100之间所有整数的和,并输出到控制台;
       */
      var sum = 0;
      for(var i=1;i<=100;i++){
         // sum = sum + i;
         sum += i;
      }
      alert( "1~100之间所有整数的和为: "+sum );
      /* 案例4:while循环语句案例
      遍历下面数组中的元素,将元素输出到控制台。 */
      var arr = [123, "abc", false, 88 ];
      var index = 0;//index作为数组的下标
      while( index < arr.length ){
         console.log( index + ":" + arr[index] );
         index++;
      }
   </script>
</head>
<body>
</body>
</html>

04_JS的数组和函数.html

<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <title>Insert title here</title>
   <script type="text/javascript">
      /* JS的数组 */
      //1.声明方式一
      var arr1 = []; //声明一个空数组
      var arr2 = [100,"hello",true,88];//声明一个具有初始值的数组
      //2.声明方式二
      var arr3 = new Array();//声明一个空数组
      var arr4 = new Array(100,"hello",true,88);//声明一个具有初始值的数组
      //3.JS的数组中可以包含任意类型的元素
      //4.JS数组的长度可以被任意改变(length)
      var arr5 = [];
      console.log( arr5.length ); // 数组长度: 0
      arr5.length = 10; //通过length属性将数组长度改为10
      console.log( arr5.length ); // 数组长度: 10
      arr5[99] = "hello";    //数组长度会提升为100
      console.log( arr5.length ); // 数组长度: 100
      arr5.length=1; //通过length属性将数组长度改为1
      console.log( arr5.length ); // 数组长度: 1
      /* JS的函数 */
      //1.函数声明方式 function
      function fn(){
         alert("fn函数执行了。。。");
      }
      //fn();
      function fn2( name, age ){
         alert( name+":"+age );
      }
      //fn2("张飞", 30);
      var fn3 = function(name, addr){
         alert( name+":"+addr )
      }
      //fn3( "刘备", "河北" );
      /** 练习:声明一个函数fn4,在函数中实现:遍历指定的两个数值(例如1和100)
         之间的整数,将是3的倍数的数值存入到一个数组中,并将数组返回。 */
      function fn4( begin, end ){
         var arr = []; // 用于存储begin到end之间所有是3的倍数的数值
         var index = 0; // 作为数组的下标
         //遍历begin到end之间的所有整数
         for( var i=begin; i<=end; i++ ){ //begin=1, end=100
            if( i % 3 == 0 ){ //判断i是否为3的倍数
               arr[index] = i;
               index++;
            }
         }
         return arr;  //[课间休息 10:02-10:20]
      }
      //调用fn4函数,并接收函数的返回值
      var arr = fn4(1,100);
      console.log( arr );
   </script>
</head>
<body>
</body>
</html>
DOM操作

DOM: Document Object Model,文档对象模型,其实就是JS专门为访问html元素提供的一套API
点击电灯可以实现开/关灯,代码实现如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>电灯开关案例</title>
<style>
   body{padding:20px;font-size:20px;}
   #div1{width:30%;border:1px solid red;padding:5px;margin-bottom:20px;}
</style>
<!-- 引入jquery的js库
<script src="js/jquery-1.8.3.min.js"></script> -->
<script>
   /** 练习:点击按钮,开灯或关灯
    onclick属性可以为当前元素绑定点击事件!
     当点击按钮时, 会触发点击事件, 执行changeImg函数
   */
   var flag = "off"; //off表示灯为关闭状态
   function changeImg(){
      //获取img元素(id为img1)
      var oImg = document.getElementById("img1");
      //判断当前灯的状态( 如果灯为关, 点击后则开; 如果等为开, 点击后则关)
      if( flag == "off" ){ //如果灯为关, 点击后则开
         oImg.src = "imgs/on.gif"; //开灯!
         flag = "on"; //on表示灯为打开状态
      }else{ // flag="on", 灯为开, 点击后则关
         oImg.src = "imgs/off.gif"; //关灯!
         flag = "off"; //off表示灯为关闭状态
      }
   }
</script>
</head>
<body>
   <input type="button" value="开/关灯"
      onclick="changeImg()" /> <br/><br/>
   <img id="img1" src="imgs/off.gif"/>
</body>
</html>

点击网页中的按钮对html元素进行操作

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<title>元素的增删改查</title>
<!-- 加入样式表 -->
<style type="text/css">
   div { border:#0099FF 2px solid;height:60px;width:350px;margin:20px 10px;padding:5px 7px;line-height:60px;font-size:26px;text-align:center;}
   #div_1{ background-color:#d400ff; }
   #div_2{ background-color:#FF3399; }
   #div_3{ background-color:#00FF00; }
   #div_4{ background-color:#FFFF66; }
   #info{ width:250px;height:90px;font-size:22px;padding:5px;resize:none;}
   input{font-size:18px;}
</style>

<!-- 引入jquery的js库
<script src="js/jquery-1.8.3.min.js"></script> -->
<script type="text/javascript">
   /** 练习1、添加元素:添加一个div元素到body中 */
   function addNode(){
      //通过document创建一个div元素( <div>我是新来的!!</div> )
      var oDiv = document.createElement( "div" );
      //为div设置内容
      oDiv.innerHTML = "我是新来的!!";
      //获取当前网页中的body元素
      var oBody = document.body;
      //将新创建的div元素添加到body元素内部
      oBody.appendChild( oDiv );
   }
   /** 练习2、删除元素: 删除id为div_2的元素 */
   //parentNode
   function deleteNode(){
      //获取id为div_2的元素
      var oDiv2 = document.getElementById("div_2");
      //获取div_2的父元素(parentNode用于获取当前元素的父元素)
      var oParent = oDiv2.parentNode;
      //通过div_2的父元素, 删除div_2的元素
      oParent.removeChild( oDiv2 );
   }

   /** 练习3、更新元素内容:将div_3的内容更新为当前时间 */
   function updateNode(){
      //获取id为div_3的元素
      var oDiv3 = document.getElementById("div_3");
      //获取表示当前时间的字符串
      //toString()是按照默认时间格式将Date中的日期转成一个字符串
      //toLocaleString()是按照本地时间格式将Date中的日期转成一个字符串
      var dateStr = new Date().toLocaleString(); 
      //将当前时间的字符串设置给div_3元素的内容
      oDiv3.innerHTML = dateStr;
   }
    
</script>
</head>
<body>
   <input type="button" onclick="addNode()"
         value="创建一个div添加到body中"/>
    <input type="button" onclick="deleteNode()"
          value="删除id为div_2的元素"/>
    <input type="button" onclick="updateNode()"
          value="将div_3的内容更新为当前时间"/><hr/>
    <div id="div_1">
      div_1
    </div>
    <div id="div_2">
       div_2
    </div>
    <div id="div_3">
       div_3
    </div>
    <div id="div_4">
       div_4
    </div>
</body>
</html>

网页换肤
在这里插入图片描述

<html>
<head>
<meta charset="utf-8"/>
<title>网页换肤</title>
<style type="text/css">
   body{font-size:18px;font-family:"微软雅黑";}
   hr{border:1px solid yellow;}
   a{font-size:17px;font-weight:500;}
   a:hover {color:#0099FF;}
   h2,#change-font{text-align:center;}
   #newstext{padding:10px;margin:0 auto;letter-spacing:2px;}  
   /* 预先定一些选择器 */
   .min{ /* 选中所有class值为min的元素 */
      font-size:16px;
   }
   .middle{ /* 选中所有class为middle的元素 */
      font-size:18px;
   }
   .max{ /* 选中所有class为max的元素 */
      font-size:20px;
   }
   .super-max{ /* 选中所有class为super-max的元素 */
      font-size:24px;
   }
</style>
<!-- 引入外部的CSS文件 -->
<link rel="stylesheet" href="#" id="link"/>

<!-- 引入jquery的js库
<script src="js/jquery-1.8.3.min.js"></script> --> 
<script type="text/javascript">
   /** 练习1:执行下面的函数,切换字体大小 */
   function resize(size){//size是class值,不同的class值字号也不相同
      //将size设置给div的class属性即可!
      var oDiv = document.getElementById("newstext");
      //给div设置class(即设置所属的分组, class是保留字,得用className属性)
      oDiv.className = size;
      
   }
   //自由练习!!!
   //定义数组,存放不同的皮肤(css文件的路径)
   var cssArr = ["red.css", "green.css", "blue.css"];
   var index = 0; //index表示数组的下标
   /** 练习2:执行下面的函数,为页面切换不同的皮肤 */
   function changeStyle(){
      //为当前网页设置不同的样式(皮肤)
      //获取head标签中的link标签(id=link)
      var oLink = document.getElementById("link");
      //将link标签的href属性指向不同的css文件的路径
      oLink.href = "css/" + cssArr[index];
      index++;
      //当数组下标等于数组长度时, 就将下标重置为零
      if( index == cssArr.length ){ 
         index = 0;
      }
   }
</script>
</head>
<body>
    <h2>重庆森林简介</h2>
    <div id="change-font">
       <!-- 当为a标签的href属性赋值为"javascript:void(0)",
          就会阻止超链接跳转, 即点击a标签后,不会跳转到任何网页!-->
       <a href="javascript:void(0)" 
          onclick="resize('min')">小字体</a> 
       <a href="javascript:void(0)" 
          onclick="resize('middle')">中字体</a> 
       <a href="javascript:void(0)" 
          onclick="resize('max')">大字体</a> 
       <a href="javascript:void(0)" 
          onclick="resize('super-max')">超大字体</a>
       <a href="javascript:void(0)" 
          onclick="changeStyle()">换肤</a>
   </div>
    <hr/>
    
    <div id="newstext" class="middle">
      <p>
         编号为223的警察(金城武)失恋后患上失恋综合症,在与金发女杀手(林青霞)擦肩而过又离奇相遇并有了一晚温情后,原本以为包括“爱情”在内的所有东西都有保质期的他意外地迎来心灵的短暂温暖。可是,他们的爱情还是结束了。
      </p>
      <p>
         快餐店新来的女招待阿菲(王菲)爱上了时常光顾快餐店的编号 为663的警察(梁朝伟),因拆了他的女友(周嘉玲)留在快餐店给他的“分手” 信,阿菲知晓了他的心情,偷拿到他的钥匙趁他不在时常潜入他家,一边梦游一边悄悄地改变他的生活,终在被他撞见时令其感受到情感的回归。然而,这才是他们爱情的开始。     
      </p>
    </div>

    <hr/>
</body>
</html>
JS增删改查元素:

document是一个js对象,用于表示当前html网页。当浏览器加载完整个html网页后,会用document对象表示整个html网页!

document.getElementById( id值 ) -- 通过元素的id值,获取一个元素。返回的是表示该元素的js对象
document.getElementsByTagName( 元素名 ) -- 通过元素名称获取当前文档中的所有指定名称的元素,返回的是一个数组,其中包含了所有指定名称的元素。
document.body -- 获取当前文档中的body元素
ele.parentNode -- 获取当前元素的父元素。ele表示当前元素
document.createElement( 元素名称 ) -- 根据元素名称创建指定名称的元素,返回的是表示新创建元素的js对象
parent.appendChild( child ) -- 通过父元素添加子元素,其中parent表示父元素,child表示子元素
parent.removeChild( child )-- 通过父元素删除子元素,其中parent表示父元素,child表示子元素
ele.innerHTML -- 获取当前元素的html内容(从开始标签到结束标签之间的所有内容),还可以设置当前元素的html内容(如果元素内部有内容,将会覆盖原有内容)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值