前端三剑客入门(HTML+CSS+JS)—— JavaScript篇

一、前言

本文着重于对上述技术的了解,并非深入学习前端,更适合后端开发人员作为学习JavaWeb的一个前置了解,在这里各种API和标签都略写,主要讲解最常见的API和标签,其余的API可以使用AI或者其他的资料库自行查询。

资料库这里推荐使用w3school 在线教程

二、JavaScript

1.引入方式

JavaScript的标签是<script> </script>

将JS引入HTML有两种方法:

1.内部引入:放任何位置都可以 但是一般写在body后面,让用户先看内容(HTML)后看脚本

2.外部引入:引入.js文件

两种方式的格式如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>

</body>
<!--
内部引入JS
放任何位置都可以
但是一般写在body后面,让用户先看内容后看脚本
-->
<script>
  alert("HELLO JS1");
</script>


<!--
引入外部文件
-->
<script src = "../js/demo.js"></script>
</html>

 效果如下:

2.输出语句

这里我们提供三种输出(到浏览器)方式:

其中:alert是写入到浏览器的警告框里面

           write直接输出到页面

           log写到控制台里面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>

</body>
<script>
    window.alert("HELLO JS1");//写入警告框

    document.write("HELLO JS2");//写入html页面

    console.log("HELLO JS3");//写入浏览器的控制台
</script>

</html>

3.变量

JS语言里面变量只有var和let两种,都是根据自己的值来改变数据类型的。

但是JS是有各种数据类型的,只是是隐式的。

number 数字
string 字符 字符串
boolean 布尔
null 空
undefined 未初始化时的数据类型

var和let都有自己的特点如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>

</body>
<script>
    //弱类型变量(没有固定的类型)
    var test = 20;
    test = "yds"
    alert(test);

    /*
     var:
        1.作用域:全局变量
        2.变量可以重复定义
     */

    {
        var age = 30;
        var age = 20;//覆盖
    }
    alert(age)

    /*
    let:
        1.作用域:代码块
        2.变量不能重复定义
     */

    {
        let age = 20;//覆盖
    }
    alert(age);

    //const:定义常量(不可改)
    const pi = 3.1415926;
    pi =3;
</script>

</html>

4.数据类型

可以通过alert(typeof 变量)来获取隐式(真实)数据类型。

下面给出了很多例子,可以自行尝试。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>

</body>
<script>
    /*
        number 数字
        string 字符 字符串
        boolean 布尔
        null 空
        undefined 未初始化时的数据类型

     */

    //number
    // var age = 19;
    // var price = 99.9;
    // alert(typeof age);
    // alert(typeof price);

    //string
    // var ch = 'a';
    // var name = "yds";
    // var city = '成都';
    // alert(typeof ch);
    // alert(typeof name);
    // alert(typeof city);

    //boolean
    // var flag1 = true;
    // var flag2 = false
    // alert(typeof flag1);
    // alert(typeof flag2);

    //null
    // var obj = null;
    // alert(typeof obj);

    //undefined
    var a;
    alert(typeof abc);

</script>

</html>

5.运算符

和Java不同:

   ==:
      1.判断累心是否一样,如果不一样,则进行类型转换
      2.再去比较其值

   ===:全等于
      1.判断类型是否一样,如果不一样,直接返回false
      2.再去比较其值

其他类型转为number:

1.string:可以在字符串前写上 + 转换,如果字面值不是数字,则转为NaN。 但一般使用parseInt
2.boolean:true -> 1     false -> 0

其他类型转为boolean:

1.number:0和NaN转为false,其他转为true
2.string:空转false,有转true
3.null:false
4.undefined:false

在健壮性判断上JS比Java要更加方便如下:(末尾)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
    //辨析== 和===
    // var age1 = 20;
    // var age2 = "20";
    // alert(age1 === age2);
   
    //类型转换:
    // var str = +"20";
    // alert(parseInt(str) + 1);

    // var flag1 = +true;
    // var flag2 = +false;
    // alert(flag1);
    // alert(flag2);

    var flag = 0;
    if(flag){
      alert("转为true");
    }else{
      alert("转为false");
    }

    //健壮性判断
    //Java
    //   if(str != null && str.length > 0){
    //
    //   }
    //JS
    //   if(str){
    //
    //   }

</script>
</html>

6.流程控制语句

不作赘述,全部和Java相同

7.函数

形式参数不需要 返回类型不需要 调用时可以传递任意参数

有两种语法:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>

<script>
  //语法
  //第一种
  function add(a,b){
     return a + b;
   }
   let result = add(1,5);
   alert(result);

  //第二种
  var add = function (a,b){
    return a + b;
  }
  //试试传递任意参数,按顺序传递形式参数,没有就忽略
  let result = add(1,5,8,9,0);
  alert(result);

</script>
</html>

8.数组对象

定义和访问和Java略有不同:

值得注意的是:JS中的数组相当于Java中的集合ArrayList,变长变类型,可以自动扩容。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
    // Array
    // 定义
    // 法一
    var arr = new Array(1,2,3);
    alert(arr);

    //法二
    var arr1 = [1,2,3];
    alert(arr1)

    //访问
    var arr2 = [1,2,3];
    arr[0] = 10;
    alert(arr2)

    //特点,JS中的数组相当于Java中的集合ArrayList,变长变类型
    var arr3 = [1,2,3];
    arr3[10] = 10;//自动扩容了
    alert(arr3[10]);

    //变类型
    var arr4 = [1,2,3];
    arr3[5] = "yds";
    alert(arr3);

    length
    var arr5 = [1,2,3,4,5];
    for (let i = 0; i < arr5.length; i++) {
        alert(arr5[i]);
    }

    //方法
    //push 添加
    //splice 删除
    var arr6 = [1,2,3,4,5];
    arr6.push(10);
    arr6.splice(0,1);
    alert(arr6);
    
</script>
</html>

9.String对象

和Java的String差别不大。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
    var str1 = new String("abc");
    var str2 = "abc";
    var str3 = 'abc';

    alert(str3.length);

    //trim()去除字符串前后两端的空白
    var str4 = "    abc";
    alert(1 + str4.trim() + 1);


</script>
</html>

10.自定义对象

类似于Java的类或者C语言的结构体,定义方式略有不同。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
    var person = {
        name : "yds",
        age : 19,
        eat: function (){
          alert("吃吃吃")
        }
    };

    alert(person.eat());
</script>

</html>

这里我们访问person对象的eat成员变量,运行结果是:

11.BOM

这里主要介绍window对象的几个函数

第一个是定时器

第二个是History

第三个是Location

这里我们给出几个案例来方便了解这些函数的使用:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
</body>

<script>
 // window
  window.alert("bbb");

  //confirm,点击确定返回true,点击取消选择false
  confirm("确认删除?");

  //定时器:   setTimeout:  执行一次
  //         setInterval() 循环执行

  setTimeout(function (){
    alert("warning");
  },2000);

  setInterval(function (){
    alert("warning");
  },2000)


  //定时开关灯
  function on() {
      alert("on");
  }
  function off() {
      alert("off");
  }
  setInterval(function (){
        on();
        setTimeout(function () {},1000);
        off()
  },1000)

  //History
  //window.history() : 历史记录
  //history.back();
  //history.forward();

  //Location
  //window.location():地址栏对象

  alert("跳转");
  location.href = "http://www.baidu.com";


  //案例:3秒后跳转到首页
  document.write("3s后跳转到页面");
  setTimeout(function () {
      location.href = "http://www.baidu.com";
  },3000);


</script>

</html>

12.DOM

这里主要介绍document对象的几个函数。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<img  id = "java"  src="../imgs/java.jpg"><br>

<div class = "cls">yds</div>
<div class = "cls">yxy</div>

<input type="checkbox" name="hobby">电影
<input type="checkbox" name="hobby">游戏
<input type="checkbox" name="hobby">旅游
<br>

</body>

<script>
  //JS通过DOM来对html操作
  //getElementById:根据Id获取属性,返回一个element对象
  var img = document.getElementById("java");
  alert(img);


  //getElementsByTagName:根据标签名称获取,返回element对象数组
  var divs = document.getElementsByTagName("div");
  alert(divs.length);
  //遍历数组
  for (let i = 0; i <divs.length; i++) {
    alert(divs[i]);
  }

  //getElementsByName,根据name属性值获取,返回element对象数组
  var hobbies = document.getElementsByName("hobby");
  for (let i = 0; i < hobbies.length; i++) {
    alert(hobbies[i]);
  }

  //getElementsByClassName,根据class属性值获取,返回element对象
  var className = document.getElementsByClassName("cls");

  for (let i = 0; i < className.length; i++) {
    alert(className[i]);
  }


  //关于img类
  var img = document.getElementById("java");
  img.src = "../imgs/MySQL.png";
  alert(img);

  //style:设置元素css样式
  var divs = document.getElementsByTagName("div");
  for (let i = 0; i < divs.length; i++) {
    divs[i].style.color = 'red';
  }

  //innerHTML:设置元素内容
  var divs = document.getElementsByTagName("div");
  for (let i = 0; i < divs.length; i++) {
    divs[i].innerHTML = '美女帅哥';
  }

  //checkBox中的checked
  var hobbies = document.getElementsByName("hobby");
  for (let i = 0; i < hobbies.length; i++) {
    hobbies[i].checked = true;//勾选每个多选框
  }
  
</script>
</html>

最终的效果:

13.事件监听

    常见事件:
    事件名    说明
    onclick    鼠标单击事件
    onblur    元素失去焦点
    onfocus    元素获得焦点
    onload    某个页面或图像被完成加载
    onsubmit    当表单提交时触发该事件
    onkeydown    某个键盘的键被按下
    onmouseover    鼠标被移到某元素之上
    onmouseout    鼠标从某元素移开
 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <input type="button" value="点我" onclick="on()"><br>
    <input type="button" value="再点我" id = "btn"><br>
</body>

<script>
  //事件绑定
  //法一:通过HTML标签中的时间属性进行绑定
   function on() {
     alert("我被点了");
   }

  //法二:通过DOM元素属性绑定
  function on() {
     alert("我被点了");
   }

   document.getElementById("btn").onclick = function() {
       alert("我被点了");
   }

</script>
</html>

14.正则表达式

概念:正则表达式定义了字符串组成的规则
定义:
1.直接量:注意不要加引号
var reg = /^\w{6,12}$/;
2.创建 RegExp 对象
var reg = new RegExp("^\w{6,12}$");
方法:
test(str):判断指定字符串是否符合规则,返回 true 或 false
语法:
^:表示开始
$:表示结束
[]:代表某个范围内的单个字符,比如:[0-9]单个数字字符
.:代表任意单个字符,除了换行和行结束符
\w:代表单词字符:字母、数字、下划线(),相当于 [A-Za-z0-9]
\d:代表数字字符:相当于 [0-9]

 量词:
+:至少一个  var reg = /^\w+$/;
*:零个或多个
?:零个或一个
{x}:x 个
{m,}:至少 m 个
{m,n}:至少 m 个,最多 n 个

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>

  //这里设置一个正则表达式:意思是输入的字符最少6个最多12个
  var reg = /^\w{6,12}$/;
  var str = "abcadadafuhfufcvjh"
  var flag = reg.test(str);
  alert(flag);

</script>
</html>

我们这里随机尝试一个str,来检验这个字符串是否符合正则表达式,得到结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值