D23-JS基础

一、JavaScript基础

1 JavaScript概述

1.1 JavaScript的作用

  • HTML:用于页面的搭建
  • CSS:用于页面的美化
  • JavaScript:用户与页面的交互

1.2 JavaScript的特点

  • js是一个弱类型的脚本语言,浏览器可以直接运行
特点JAVAJavaScript
面向对象完全面向对象语言:继承,多态、封装基于对象的语言,不完全符合面向对象的思想
运行方式编译型,运行过程需要生成字节码文件解释型语言,不会生成中间文件,解释一定行数,在执行
跨平台安装了JVM就可以运行在不同的操作系统中只要有浏览器的地方就可以运行
大小写区分大小写区分大小写
数据类型强类型语言,不同的数据类型有严格区分弱类型元,不同类型的数据可以复制给同一个变量

1.3 JavaScript的语法组成

组成部分作用
ECMA Script构成了JS核心的语法基础
BOMBrowser OBject MOdel 浏览器对象模型,用来操作浏览器的对象
DOMDocunment Object Model 文档对象模型,用来操作网页中的元素

二、JavaScript基础语法

2.1 html与js结合方式

<!--
    HTML与js结合方式
        1)内部脚本
            格式:使用<script>标签,在标签内编写接收代码
        2)外部脚本
            格式:使用<script>,在标签内src属性引入外部的js代码

        注意:
            1)script标签可以在页面的任意位置,推荐放在body下方
                    head存放css样式的,body下方存放js脚本
             2)script标签可以出现多次,依次被加载
             3)script标签如果使用了src属性,那么标签体内的代码不会加载到浏览器中


-->

代码:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>01_html与js结合方式</title>
    <!--
        默认  type="text/javascript"声明此标签的类型
    -->
    <script type="text/javascript">
        // 默认, 文档输出流 --body标签内部
        document.write("<h3>你好,小娜!<h3> ");
    </script>
    <script src="../js/myjs.js">
        document.write('<h3>我不会加载到浏览器中</h3>')
    </script>
</head>
<body>

</body>
</html>

2.2 js变量的定义

  • java是强类型语言,注重变量的定义,所以在java中定义变量类型的方式如下
// 整型
int i = 1314;
// 浮点型
double d = 521.1314;
// 字符型
char c ='c';
// 字符串型
String str = "用心做教育";
//布尔型
boolean b = true;
  • js是弱类型语言,不注重变量的定义,所以在js中定义变量的方式如下
<script>

   // 整型
   var i = 12345;
   // 浮点型
   var d = 123.123;
   // 字符型
   // 注意:在js中,没有字符型只有字符串,可以使用单引号或双引号
   var c = 'c';
   // 字符串型
   var str = "用心做教育";
   // 布尔型
   // 在ES6版本之前所有的变量声明都为var,可以省略不写;(let、const 常量)
   b = true;
</script>

2.3 js数据类型

js与java一样,数据类型也分为基本数据类型和引用数据类型
a)基本数据类型

number:数值型(整型和浮点型)
string:字符串型(字符和字符串)
boolean:布尔型
null:空值 例如:var a = null;
undefined:未定义 例如: var b;

b)引用数据类型
js与java一样,使用new关键字来创建对象

// 创建上帝对象
var obj = new Object();
// 创建日期对象
var date = new Date();

c) typeo操作符

  • 作用:判断变量的数据类型
  • 格式: typeof 变量或者typeof(变量)
<script !src="">
    //1)整型
    var i=123456;
    /*
    补充知识点:System.out.println() ===== console.log()
    js是弱类型语言,结尾可以不加分号,建议大家写上
     */
    //console.log("整型:"+typeof i);
    console.log("整型:"+typeof i);
    //2)浮点型
    var d=123.123;
    console.log("浮点型:" + typeof d);
    //3)字符型
    var c='ccccccccc';
    console.log("字符型:" + typeof  c);
    //4)字符串型
    var cha="因为用心,所以动听";
    console.log("字符串:" + typeof cha);
    //5)布尔型
    b=true;
    console.log("布尔型:" + typeof b);
    //6)空值,引用数据类型的占位符
    var n=null;
    console.log("空值:" + typeof n);
    //7)未定义 undefined
    var u;
    console.log("未定义:" + typeof u);

    //8)引用数据类型  ps:js变量可以重复定义使用
    u=new Date();
    console.log("引用数据类型:" + typeof u);

</script>

2.4 js运算符

js与java的运算符一样,只不过仍有不同的地方

<script>
    //算数运算符。在js中,住址可以和字符进行数学运算,(底层进行了转换)但是字符串加号还是拼接
    var a=10;
    var b='3';
    console.log(a + b);//字符串拼接
    console.log(a / b);//保留小数

    //比较运算符
    var c='10';
    console.log(a == c);//返回结果为true。比较的是数据内容
    console.log(a === c);//返回结果false。比较的是类型和内容
    //!=   !==
    console.log(a != c);//false
    console.log(a !== c);//true
</script>

2.5 流程控制语句

  1. 循环结构
  2. 顺序结构
  3. 分支结构
    与java中一样

2.6 案例 :九九乘法表

代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>07_九九乘法表</title>
    <style type="text/css">
        table {
            margin: auto;
            /*变成细边框*/
            border-collapse: collapse;

        }
        td {
            padding: 5px;
        }
    </style>

</head>
<body>

</body>
<script>
    document.write('<table border="1">')
    document.write('<caption>九九乘法表</caption>')
    for (let i = 1; i < 10; i++) {
        document.write('<tr>')
        for (let j = 1; j <= i; j++) {
            document.write('<td>')
            document.write(j + "x" + i + "=" + (j * i));
            document.write('</td>')
        }
        document.write('</tr>')
    }
    document.write('</table>')

</script>
</html>

2.7 在浏览器中调试(非常重要)

使用浏览器提供的调试工具,(F12),快速的定位问题,解决问题,debug调试
如图:
在这里插入图片描述

2.8 函数(方法)使用

is脚本的代码主要在函数中实现

a) 普通函数

//格式
function 函数名(参数列表){
//js代码
[return 返回值;]
}

代码

<script>
    // 普通函数
    // 在js中,不支持方法重载,重名方法会被覆盖
    // 再来三个数相加
    function sum(a, b, c) {
        return a + b + c;
    }
    // 二个数相加
    function sum(a, b) {
        // 在所有的函数中内置arguments 类似于java args 用来接收参数列表
        console.log(arguments);
        console.log(arguments[0]);
        console.log(arguments[1]);
        console.log(arguments[2]);
        return a + b;
    }

    // 调用sum方法
    // NaN not a number 这不是一个数
    console.log(sum(5, 10, 15));
</script>

b)匿名函数

  • 格式
var fun = function(参数列表){
//js代码
}

代码

<script>
    // 匿名函数
    var fun = function (name) {
        document.write('<h3>' + name + '喜欢看快乐大本营</h3>');
    }

    // 调用函数
    fun("吉吉姐姐");
</script>

c) 变量作用域

  • 两种
  /*
    * js变量作用域二种
    *   全局变量
    *       特点:作用域在整个页面
    *   局部变量
    *       特点:函数执行完毕后,销毁
    *       特殊:在函数内如果未用var来声明变量,此变量为全局变量
    *
    * */

代码

<script>
    var a = 5;

    function show() {
        var b = 10;
        console.log("我是在方法内的局部变量b:" + b);
        // 为全局变量
        c = 15;
        console.log("我是在方法内未声明的变量c:" + c);
    }

    show();
    console.log("我是在方法外未声明的变量c:" + c);
    // b is not defined
    // console.log("我是在方法外的局部变量b:" + b);
</script>
<script>
    console.log("我是全局变量a:" + a);
</script>

2.9 案例:轮播图

  • 需求

实现每过3秒中切换一张图片的效果,一共5张图片,当显示到最后1张的时候,再次显示第1张

  • 知识点
/*
    * 1)获取img标签的dom对象
    *       格式:document.getElementById(" ");
    *
    *  2)获取定时器对象,指定间隔时间,触发函数
    *       格式:
    *           window.setInterval("函数名()",时间间隔);单位毫秒
    *           window.setInterval(函数名,间隔时间);单位毫秒
    *
    * */

代码:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>12_轮播图</title>

    <style type="text/css">
        .container {
            /*居中*/
            margin: auto;
            border: 1px solid black;
            width: 850px;
        }

        img {
            width: 850px;
        }
    </style>
</head>
<body>

<div class="container">
    <img id="myImg" src="../img/0.jpg" alt="">

</div>

</body>
<script>
    /*
    步骤分析:
        1)获取img标签的dom对象
        2)编写函数修改对象的src属性
        3)获取定时器间隔3秒触发函数
     */
    //1)获取img标签的dom对象
    let myImg = document.getElementById("myImg");

    //计数器
    var num = 1;

    //编写函数修改对象的src属性
    function changeImg() {
        myImg.src = "../img/" + num + ".jpg";

        num++;

        if (num === 5) {
            num = 0;
        }
    }
    //3)获取定时器间隔3秒触发函数
    window.setInterval("changeImg()", 3000);
</script>
</html>

三、JavaScript事件

3.1 作用

js通过事件来监听一切行为,结合函数完成页面的交互效果。

3.2 常见事件

属性描述
onblur元素失去焦点
onfocus元素获得焦点
onchange用户改变域的内容
onclick鼠标点击某个对象
ondblclick鼠标双击某个对象
onkeydown某个键盘的键被按下
onkeyup某个键盘的键被松开
onload某个页面或图像被完成加载
onmouseout某个鼠标按键被按下
onmouseout鼠标从某个元素移开
onmouseover鼠标被移到某个元素之上
onmouseup鼠标被移到某个元素之上
onmouseup某个鼠标按键被松开
onsubmit提交按钮被点击

3.3 简单交互

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>02_简单交互</title>

    <script>
        //页面加载事件
        window.onload=function () {
            window.alert("页面加载完毕...")
            //单击事件
            document.getElementById("myBtn").onclick=function () {
                window.alert("被点击了!")
            }
            //双击事件
            document.getElementById("myImg").onclick=function () {
                this.src="../img/3.jpg";
            }
            //获取焦点
            document.getElementById("myText").onfocus=function () {
                this.value="";
            }
            //失去焦点
            document.getElementById("myText").onblur=function () {
                this.value="请输入用户名...";
            }
            //改变事件
            document.getElementById("mySel").onchange=function () {
                alert(this.value)

            }
            //表单校验
            document.getElementById("myForm").onsubmit=function () {
                window.alert("我校验了!")
                return false;
            }
        }
    </script>

</head>
<body>
<input id="myBtn" type="button" value="点我啊!"><br/><br>

<img id="myImg" src="../img/1.jpg" width="350ox" alt=""><br/><br/>

<input id="myText" type="text" value="请输入用户名...">

<hr/>
省份:
<select id="mySel">
    <option value="bj">北京</option>
    <option value="sh">上海</option>
    <option value="gd">广东</option>
    <option value="hn">湖南</option>
</select><br>
<!--如果该表单需要根据触发函数的返回值决定是否可以提交,那么必须在触发方法之前加上return-->

<form id="myForm" action="#">
    用户名:<input type="text" name="userName"/>
    <input type="submit" value="提交"/>
    
</form>
<br/>
</body>
</html>

四、 JavaScript内置对象

4.1 数组对象

  • 知识点
/*
   * 数组对象创建方式 4 种:
   *       1)var arr=[元素1,元素2....];(掌握)
   *       2) var arr=new Array();
   *       3)var arr = new Array(长度);
   *       4)var arr =new Array(元素1,元素2...);
   *
   *       注意:
   *           在js中,数组的元素类型任意
   *           在js中,数组元素的长度任意
   *
   *           你会发现他就像java的list集合
   *
   * */

代码

<script>

    /*
    内置的方法:
        1) concat() 连接数组
        2)join("连接符") 与 split功能相反,将数组拼接成字符串
        3)reverse() 数组反转
        4)sort() 排序
            字符串
            数值
                sort(function(a,b){
                return a-b; 升序
                return b-a; 降序
                })
     */
    var arr1 = new Array("小名", "小花", "小溪");
    var arr2 = ["c", "b", "a"];
    console.log(arr2.sort());

    var arr6 = [1, 11, 9, 3, 7];
    console.log(arr6.sort(
        function (a, b) {
            return a - b;
        }
    ));

</script>

4.2 日期对象

代码:

<script>
    //日期对象
    let date=new Date();
    console.log(date);//获取当前系统时间
    console.log(date.toLocaleDateString());//返回本地时间
    console.log(date.getFullYear());//年
    console.log(date.getMonth()+1);//获取月  0--11
    console.log(date.getDate());//日
    console.log(date.getTime());//获取从1970年到现在的毫秒值

</script>

4.3 全局对象

代码:

<script>
    /*
    * 字符串转换成数值类型
    *       1)parseInt();整型
    *       2)parseFloat(); 浮点型
    *       当我们修改图片的大小 600px
    *
    *       补充:从第一个字符开始转换,当遇到非数值字符 停止转换
    *
    *        NaN not a number 这不是一个数
    *       // 判断 如果字符串是数值返回false ,如果字符串不是数值返回true
    *       isNaN();
    *
    * */

    var a = "123.123";
    var b = '123';
    var a1 = "a1a23.a1a23";
    console.log(parseInt(a));
    console.log(parseFloat(a));

    console.log(isNaN(a1));//a现在不是数值的话返回true
    console.log(isNaN(b));//b现在是一个数值返回false

    /*
    * 编码 解码
    *   URL:统一资源定位符  url地址路径
    *   URI:统一资源标识符
    *   当浏览器发送数据给服务器, 中文==编码
    *       encodURI()
    *
    *    浏览器接收服务器数据  中文 == 解码
    *        decodeURI();
    *
    * */
    str="我们预测明天会下雨!"
    //编码
    let en =encodeURI(str);
    console.log(en);
    //解码
    console.log(decodeURI(en));
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值