JavaScript基础

JavaScript

  • JavaScript是一种客户端脚本语言,运行在客户端浏览器中,每个浏览器都悲剧解析JavaScript的引擎
  • 脚本语言: 不需要编译,就可以被浏览器直接解析执行了
  • 核心功能就是增强用户和HTML页面交互的

JavaScript开发环境搭建
组成部分: ECMScript,DOM,BOM

  • 和HTML结合的方式
    内部方式: <script></script>
    外部方式:<script src = 文件路径></script>
  • Node.js: JavaScript运行环境
    1.node -v #如果出现版本号,说明安装成功
    2.npm -v # npm包管理器,是集成在node中的,显示出npm的版本信息
  • VSCode: 编写前端技术的开发环境

基本语法

  • 注释
    单行注释: //
    多行注释: /* 注释内容*/

输入输出语句

  • 输入框
    prompt("提示内容");
  • 弹出告警框
    alert("提示内容");
  • 控制台输出
    console.long("控制台显示内容");
  • 页面内容输出
    document.write("显示内容");

变量和常量

  • javaScript 属于弱类型的语言,定义变量时不区分具体的数据类型
  • 定义局部变量
    let 变量名 = 值;
  • 定义全局变量
    变量名 = 值;
  • 定义常量
    const 常量名 = 值;

原始数据类型


原始数据类型
  • typeof 用于判断变量的数据类型

算数运算符


算数运算符

赋值运算符


赋值运算符

比较运算符


比较运算符

逻辑运算符


逻辑运算符

三元运算符格式

  • 格式
    (比较表达式)? 表达式1:表达式2;
  • 执行流程
    如果比较表达式为true,则取表达式1;
    如果比较表达式为false,则取表达式2;

流程控制语句和循环语句

  • if语句
  • switch语句
  • for语句
  • while语句
    注意: 循环和控制语句,和java的格式语法一样, 只有在for语句中,定义变量的关键词时 let.

数组

  • 数组的使用和java中的数组基本一致,但是javaScript 中的数组更加灵活,数据类型和长度时没有限制的
  • 定义格式
    let 数组名 = [元素1,元素2,...];
  • 索引范围
    从0开始,最大数组长度-1;
  • 索引长度
    数组名.length
  • 数组高级运算符
    数组复制
    合并数组

字符串转数组

函数

  • 函数类似于java中的方法,可以将一些代码进行抽取,达到复用的效果
  • 定义格式
function 方法名(参数列表){
  方法体;
  return 返回值;
}
注意:  
1.方法如果没有返回值,return可以不写!
2.如果有参数,写参数,如果没参数,括号内留空!
  • 可变参数
function 方法名(..参数名){
  方法体;
  return 返回值;
}
  • 匿名函数
function(参数列表){
  方法体;
}

DOM

  • DOM(Document ObjectModel): 文档对象模型
  • 将HTML文档的各个组成部分,封装为对象,借助对象,可以将HTML文档进行增删改查的动态操作
    1.Document: 文档对象
    2.Element: 元素对象
    3.Attribute: 属性对象
    4.Text: 文本对象
  • Element 元素的操作


    操作方法列表
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Element元素操作</title>
</head>
<body>
    <div id="div1">div1</div>
    <div id="div2">div2</div>
    <div class="cls">div3</div>
    <div class="cls">div4</div>
    <input type="text" name="username"/>    
</body>
<script>
    //1.getElementById() 根据id属性获取元素对象
    let div1 = document.getElementById("div1");
    //alert(div1);
    //2.getElementByTagName() 根据元素名称获取元素对象们,返回数组
    let divs = document.getElementsByTagName("div");
    //alert(divs.length);
    //3.getElementByClassName() 根据Class属性获取元素对象,返回数组
    let clss = document.getElementsByClassName("cls");
    //alert(clss.length)
    //4.getElementByName() 根据name属性值获取元素对象们,返回数组
    let username = document.getElementsByName("username");
    //alert(username.length);
    //5.子元素对象.parentElement属性,获取当前元素的父元素
    let body = div1.parentElement;
    alert(body);
</script>
</html>
  • Element 元素的增删改操作


    增删改操作
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>元素的增删改</title>
</head>
<body>
    <select id="s">
        <option>--请选择--</option>
        <option>北京</option>
        <option>上海</option>
        <option>广州</option>
        <option>深圳</option>
    </select> 
</body>
<script>
    //1.createElement() 创建新元素
    let option = document.createElement("option");
    //为option添加文本内容
    option.innerText="杭州";
    //2.appendChild() 将子元素添加到父元素中   父元素对象调用该方法
    let select = document.getElementById("s");
    select.appendChild(option);
    //3.removeChild() 通过父元素删除子元素  父元素对象调用该方法
    //select.removeChild(option);
    //4.replaceChild() 用新元素替换旧元素
    let option2 = document.createElement("option");
    option2.innerText="武汉";
    select.replaceChild(option2,option);
</script>
</html>
  • Attribute 属性操作


    Attribute 属性操作
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>属性的操作</title>
    <style>
        .aColor{
            color:blue
        }
    </style>
</head>
<body>
    <a>点我呀!</a>

</body>
<script>
    //1.setAttribute() 添加属性 
    let a = document.getElementsByTagName("a")[0];
    a.setAttribute("href","https://www.baidu.com");
    //2.getAttribute() 获取属性
    let value = a.getAttribute("href");
    //alert(value);
    //3.removeAttribute() 移除属性
    a.removeAttribute("href");
    //4.style属性 添加样式
    //a.style.color ="red";
    //5.className属性 添加指定样式
    a.className = "aColor";
</script>
</html>
  • Text文本操作


    Text文本操作
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>文本操作</title>
</head>
<body>
    <div id="div"></div>
</body>
<script>
    //1.innerText 添加文本内容: 不解析标签
    let div = document.getElementById("div");
    //div.innerText =  "<b>点我呀!</b>";

    //2.innerHTML 添加文本内容: 解析标签
    div.innerHTML = "<b>点我呀!</b>";

</script>
</html>

事件

  • 事件指的就是当某些组件执行了某些操作后,会触发某些代码的执行
  • 常用事件


    常用的事件
  • 了解的事件


    了解的事件
  • 绑定事件的方式
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>事件</title>
</head>
<body>
    <img id="img" src="img/2.jpg"/>
    <br>
    <!-- 方式一: 通过标签中的事件属性进行绑定 -->
    <!-- <button id="up" onclick="up()">上一张</button>
    <button id="down" onclick="down()">下一张</button> -->

    <!-- //方式二: 通过DOM元素属性绑定 -->
    <button id="up">上一张</button>
    <button id="down">下一张</button>

    


</body>
<script>
    //<!-- 方式一: 通过标签中的事件属性进行绑定 -->
    //显示第一张图片
    function up(){
        let img = document.getElementById("img");
        img.setAttribute("src","img/2.jpg")
    }
    //显示第二章图片
    function down(){
        let img = document.getElementById("img");
        img.setAttribute("src","img/3.jpg")
    }


    //<!-- //方式二: 通过DOM元素属性绑定 -->
    //为上一张按钮绑定单击事件
    let upBt = document.getElementById("up");
    upBt.onclick = up;
    //为下一张按钮绑定单击事件
    let downBt = document.getElementById("down");
    downBt.onclick = down;

</script>
</html>

综合案例- 动态表格

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>综合案例-动态表格</title>
    <style>
        table{
            border: 1px solid;
            margin: auto;
            width: 800px;
        }

        td,th{
            text-align: center;
            border: 1px solid;
        }
        div{
            text-align: center;
            margin: 50px;
        }
    </style>
</head>
<body>
<div>
    <input type="text" id="name" placeholder="请输入姓名" autocomplete="off">
    <input type="text" id="age" placeholder="请输入年龄" autocomplete="off">
    <input type="text" id="gender" placeholder="请输入性别" autocomplete="off">
    <input type="button" value="添加" id="add">
</div>
    <table id="tb">
        <caption>学生信息表</caption>
        <tr>
            <th>姓名</th>
            <th>年龄</th>
            <th>性别</th>
            <th>操作</th>
        </tr>
        <tr>
            <td>张三</td>
            <td>23</td>
            <td>男</td>
            <td><a href="JavaScript:void(0);" onclick="drop(this)">删除</a></td>
        </tr>
        <tr>
            <td>丽丽</td>
            <td>23</td>
            <td>女</td>
            <td><a href="JavaScript:void(0);" onclick="drop(this)">删除</a></td>
        </tr>
        <tr>
            <td>王五</td>
            <td>25</td>
            <td>男</td>
            <td><a href="JavaScript:void(0);" onclick="drop(this)">删除</a></td>
        </tr>
    </table>
</body>
<script>
    //添加功能的实现
    //1.为添加按钮绑定事件
    document.getElementById("add").onclick = function(){
        //2.创建一个行的元素
        let tr = document.createElement("tr");
        //3.创建四个单元格元素
        let nameTB = document.createElement("td");
        let ageTB = document.createElement("td");
        let genderTB = document.createElement("td");
        let deleteTB = document.createElement("td");
        //4.将单元格元素添加到行元素中
        tr.appendChild(nameTB);
        tr.appendChild(ageTB);
        tr.appendChild(genderTB);
        tr.appendChild(deleteTB);
        //5.获取输入框的文本信息
        let name = document.getElementById("name").value;
        let age = document.getElementById("age").value;
        let gender = document.getElementById("gender").value;

        //6.根据获取的信息创建三个文本元素
        let nameText = document.createTextNode(name);
        let ageText = document.createTextNode(age);
        let genderText = document.createTextNode(gender);
        //7.将3个文本元素添加到tb中
        nameTB.appendChild(nameText);
        ageTB.appendChild(ageText);
        genderTB.appendChild(genderText);
        //8.创建超级链接元素和显示的文本以及添加href属性
        let a = document.createElement("a");
        let aText = document.createTextNode("删除");
        a.setAttribute("href","JavaScript:void(0);");
        a.appendChild(aText);
        //9.将超链接元素添加到tb中
        deleteTB.appendChild(a);
        //10.获取table元素,将tr元素添加到table中
        let table = document.getElementById("tb");
        table.appendChild(tr);
    }
    //绑定删除事件
    //1.为每个删除超链接标签添加单击事件的属性
    //2.定义删除的的方法
    function drop(obj){
        //3.获取table元素
        let table = obj.parentElement.parentElement.parentElement;
        //4.获取tr元素
        let tr = obj.parentElement.parentElement;
        //5.通过table删除tr
        table.removeChild(tr); 
        }
</script>
</html>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • JavaScript学习(1)之JavaScript基础 由于工作原因,开发语言逐渐以JavaScript为主,所...
    AlphaGL阅读 412评论 0 2
  • 1 - 编程语言 1.1 编程 编程:就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果...
    Scincyc阅读 271评论 0 0
  • # JavaScript基础第01天 ## 1 - 编程语言 ### 1.1 编程 -编程: -就是让计算机为解...
    私心呢阅读 225评论 0 0
  • JavaScript 从交互的角度,描述行为(提升用户体验)。 JavaScript-基础 Github 特点 简...
    LoTwT阅读 203评论 0 0
  • --- 学习目标: - 掌握编程的基本思维 - 掌握编程的基本语法 typora-copy-images-to: ...
    YFBigHeart阅读 1,046评论 0 2