JavaScript 基础知识

介绍

JavaScrit是一种轻量级 \ 解释性 \ 面向对象的脚本语言.它主要被设计用于网页上上实现动态效果,增加用户与网页的交互性.

作为一种客户端脚本语言,JavaScript可以直接嵌入HTML,并在浏览器中执行.

与HTML和CSS不同,JavaScript使得网页不再是静态的,而是可以根据用户的操作动态改变的.

JavaScript的作用:

JavaScript在前端开发中扮演着重要的角色,其应用领域包括但不限于以下三种:

  • 客户端脚本 : 用于在用户浏览器中执行,实现动态效果和用于交互.

  • 网页开发 : 与HTML和CSS协同工作,使得网页具有更强的交互性和动态性

  • 后端开发 : 使用Node.js , JavaScript也可以在服务器段运行,实现服务器端应用的开发

JavaScript的导入方式

在网页开发中,JavaScript 可以通过多种方式导入到 HTML 文档中。以下是几种常见的 JavaScript 导入方式:

  1. 内联方式(Inline):在 HTML 文件中直接嵌入 JavaScript 代码,放置在 <script> 标签内,通常位于文档的 <head><body> 部分

  2. 外部引入方式(External):将 JavaScript 代码保存在独立的外部文件中,通过 <script> 标签的 src 属性引入。

导入使用示例:

 <!DOCTYPE html>
 <html lang="en">
 <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS导入方式 学习</title>
    <script>
      console.log("Hello,head标签的内联样式")
    </script>
​
    <script src="./js/myscript.js"></script>
 </head>
 <body>
    <h1>JavaScript 的导入方式</h1>
    <script>
      console.log("Hello,body标签的内联样式")
      alert("你好,内联样式弹窗");
    </script>
 </body>
 </html>
JS 基本语法
(1)变量

在 JavaScript 中,使用 varletconst 这三个关键字声明变量:

var x; // 声明一个变量x
let y = 5; // 声明一个变量y并初始化为5
const PI = 3.14; // 声明一个常量PI,并初始化为3.14
(2)数据类型

JavaScript 有一些基本的数据类型:

  • 字符串(String): 用于表示文本。

  • 数字(Number): 用于表示数值。

  • 布尔值(Boolean): 用于表示真(true)或假(false)。

  • 未定义(Undefined): 表示变量声明但未初始化。

  • 空值(Null): 表示空或无值。

var greeting = "Hello, World!";
var age = 25;
var logic = true;
var z;
var empty_value = null;
(3)条件语句

条件语句是编程中常用的结构,用于基于不同的条件执行不同的代码块。在 JavaScript 中,条件语句主要包括 if、else if 和 else。下面详细讲解条件语句的使用:

  • if 语句:用于执行一个代码块,当指定的条件为真(true)时执行。语法如下:

if (condition) {
    // 如果条件为真,执行这里的代码
}
​
// 示例
// 这个例子中,如果 age 大于或等于 18,就会输出 "你已经成年了。"。
var age = 18;
​
if (age >= 18) {
    console.log("你已经成年了。");
}
  • else 语句:用于在上一个 if 和所有的 else if 都为假时执行的代码块。语法如下:

if (condition) {
    // 如果条件为真,执行这里的代码
} else {
    // 如果条件为假,执行这里的代码
}
​
​
// 示例
// 在这个例子中,如果 is_raining 为真,输出 "记得带伞!",否则输出 "天气不错,无需带伞。"。
​
var is_raining = true;
​
if (is_raining) {
    console.log("记得带伞!");
} else {
    console.log("天气不错,无需带伞。");
}
  • else if 语句:用于在上一个 if 语句条件为假时,检查另一个条件。可以有多个 else if 语句。语法如下:

if (condition1) {
    // 如果条件1为真,执行这里的代码
} else if (condition2) {
    // 如果条件2为真,执行这里的代码
} else {
    // 如果以上条件都为假,执行这里的代码
}
​
// 示例
// 在这个例子中,根据不同的时间,会输出不同的问候语。
​
var time = 14;
​
if (time < 12) {
    console.log("上午好!");
} else if (time < 18) {
    console.log("下午好!");
} else {
    console.log("晚上好!");
}
(4)循环语句

循环语句用于重复执行一段代码,直到指定的条件不再满足为止。在 JavaScript 中,常见的循环语句有 for 循环、while 循环和 do...while 循环。下面详细讲解这些循环语句的使用:

  • for 循环:是一种常见的循环结构,用于按照指定的条件重复执行代码块。语法如下:

for (初始化表达式; 循环条件; 迭代器) {
    // 循环体,执行这里的代码
}
​
// 示例
// 在这个例子中,var i = 0 是初始化表达式,
// i < 5 是循环条件,i++ 是迭代器。循环体中的代码会被执行5次,输出0到4。
for (var i = 0; i < 5; i++) {
    console.log(i); // 输出 0 到 4
}
  • while 循环会在指定的条件为真时执行代码块。语法如下:

while (循环条件) {
    // 循环体,执行这里的代码
}
​
// 示例
// 在这个例子中,i < 5 是循环条件,
// 循环体中的代码会在每次循环时执行,输出0到4。
var i = 0;
​
while (i < 5) {
    console.log(i); // 输出 0 到 4
    i++;
}
  • do...while 循环会先执行一次代码块,然后检查指定的条件是否为真,如果为真,则重复执行。语法如下:

do {
    // 循环体,执行这里的代码
} while (循环条件);
​
​
// 示例
// 在这个例子中,循环体中的代码会至少执行一次,
// 然后在每次循环时检查条件是否为真,如果为真,则继续执行。
var i = 0;
​
do {
    console.log(i); // 输出 0 到 4
    i++;
} while (i < 5);

在循环中,可以使用 breakcontinue 来控制循环的流程:

  • break 用于跳出循环,结束循环的执行。

  • continue 用于跳过当前循环中的剩余代码,继续下一次循环。

for (var i = 0; i < 5; i++) {
    if (i === 2) {
        continue; // 跳过 i 等于 2 的情况
    }
    if (i === 4) {
        break; // 结束循环,跳出循环体
    }
    console.log(i);
}

上述基本语法使用示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS 基本语法 练习</title>
</head>
<body>
    <script>
        var x;
        let y = 5;
        const PI = 3.14;
        console.log(x,y,PI);
        let text = '坤年';
        console.log(text);
        let empty_value = null;
        console.log(empty_value);
        
        let age = 18;
        if(age > 18) {
            console.log('你已经成年了');
        } else {
            console.log('未成年');
        }
​
        // let time = 12;
        // if(time < 12) {
        //     alert('good morning');
        // } else if(time < 18) {
        //     alert('good afternoon');
        // } else {
        //     alert('good evening');
        // }
​
        console.log('for 循环');
        for (let i = 0;i < 10;i++) {
            console.log(i+1);
            
        }
        console.log('while 循环');
        
        let count = 1;
        while(count <= 10) {
            console.log(count);
            count++;
        }
​
        console.log('循环关键字');
        for (var i = 0;i < 5;i++) {
            if (i == 2) {
                continue;
            }
            if (i == 4) {
                break;
            }
            console.log(i);
        }
    </script>
</body>
</html>
(5)函数

函数是一段可重复使用的代码块,它接受输入(参数)、执行特定任务,并返回输出。在 JavaScript 中,函数是一等公民,可以被赋值给变量,作为参数传递给其他函数,也可以作为其他函数的返回值。

使用 function 关键字声明一个函数,语法如下:

function function_name(参数) { // 参数可以不写,表示不传参
    // 函数体,执行这里的代码
    return 返回值; // 可选,返回值
}
​
// 示例
function greet() {
    console.log("Hello, world!");
}
​
// 有返回值的函数
function greet_with_return() {
    return "Hello, world!";
}

通过函数名和括号调用函数,将参数传递给函数:

greet();
​
var a = greet_with_return()
console.log(a);

函数可以接受零个或多个参数,参数是函数在执行时的输入。参数由逗号分隔,定义在函数声明中。示例:

function greet(name) {
    return "Hello, " + name + "!";
}
​
// 调用
var greeting = greet("Alice");
console.log(greeting); // 输出:Hello, Alice!

匿名函数 是没有函数名的函数,通常用于作为函数表达式,或在函数内定义一个函数。示例:

var square = function (x) {
    return x * x;
};

JavaScript 中的作用域分为 全局作用域局部作用域。在函数内部声明的变量具有函数作用域,而在函数外部声明的变量具有全局作用域。

var globalVar = "I am global";
​
function example() {
    var localVar = "I am local";
    console.log(globalVar); // 可访问全局变量
    console.log(localVar); // 可访问局部变量
}
​
example();
console.log(globalVar); // 输出:I am global
console.log(localVar); // 报错,局部变量不可在函数外部访问

闭包是指一个函数能够访问并记住其词法作用域,即使该函数在当前词法作用域之外执行。

闭包使得函数可以保持对其创建时的作用域的引用。示例:

function outer() {
    var outerVar = "I am outer";
​
    function inner() {
        console.log(outerVar); // 访问了外部函数的变量
    }
​
    return inner;
}
​
var closureFunc = outer();
closureFunc(); // 输出:I am outer

函数使用示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS 函数 练习</title>
</head>
<body>
    <script>
        function hello() {
            console.log('hello,world');
        }
        hello();
​
        function hello_with_return() {
            return 'hello,world - 返回值'
        }
        let a = hello_with_return();
        console.log(a);
​
        function hello_with_params(name) {
            console.log('hello,' + name);
        }
        hello_with_params('xb')
​
        //作用域
        let global_var = '全局变量';
        function local_var_function() {
            let local_var = '局部变量';
            console.log('函数内打印全局变量: ' + global_var);
            console.log('函数内打印局部变量: ' + local_var);
        }
        local_var_function();
        console.log('全局打印全局变量: ' + global_var);
        //console.log('全局打印局部变量: ' + local_var);
    </script>
</body>
</html>
事件

JavaScript 中的事件处理是前端开发中至关重要的一部分,它允许你对用户的交互做出响应,例如点击、鼠标移动、键盘输入等。

事件是文档或浏览器窗口中发生的特定瞬间,例如用户的点击、键盘的按下、页面的加载等。常见的事件如下:

事件描述
onClick点击事件
onMouseOver鼠标经过
onMouseOver鼠标移出
onChange文本内容改变事件
onSelect文本框选中
onFocus光标聚集
onBlur移开光标
onLoad网页加载
onUnload关闭网页

事件处理程序是与特定事件相关联的函数。

当事件发生时,关联的事件处理程序将被调用。

事件绑定使用示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>事件处理 练习</title>
</head>
<body>
    <button οnclick="click_event()">这是一个点击事件按钮</button>
    <input type="text" οnfοcus="focus_event()" οnblur="blur_event()">
    <script>
        // 点击事件
        function click_event () {
            alert('点击事件触发了!');
        }
        // 聚焦事件
        function focus_event () {
            console.log('获取焦点');
        }
        // 失去焦点事件
        function blur_event () {
            console.log('失去焦点');
        }
    </script>
</body>
</html>
JavaScript中绑定事件的方法有三种:
  1. HTML 属性:

<button οnclick="myFunction()">Click me</button>
  1. DOM 属性:

var button = document.getElementById('myButton');
button.onclick = function () {
    alert('Button clicked!');
};
  1. addEventListener 方法:

var button = document.getElementById('myButton');
button.addEventListener('click', function () {
    alert('Button clicked!');
});
DOM操作

JavaScript 中的 DOM(文档对象模型),它操作允许开发者通过 JavaScript 与 HTML 文档交互,动态地改变文档的结构、样式和内容。

当网页被加载时,浏览器会创建页面的文档对象模型,也就是 DOM(Document Object Model)。

如果你不理解什么是对象也没关系,你只需要知道对象的作用就是让函数和变量之前建立关系,对象中的属性就是变量,方法就是函数。与普通的变量、函数相比,区别就是在调用的使用前面需要加对象名.

在 Web 开发中,DOM 通常与 JavaScript 一起使用。

每个 HTML 或 XML 文档都可以被视为一个文档树,文档树是整个文档的层次结构表示。每个节点都有父节点、子节点和同级节点。

文档节点是整个文档树的根节点,而其他节点则分布在树的不同层次上。

DOM 为这个文档树提供了一个编程接口,开发者可以使用 JavaScript 来操作这个树状结构.

DOM 中的一切都是节点。文档本身是一个文档节点,而文档中的元素、属性和文本都是不同类型的节点。主要的节点类型包括:

  • 元素节点(Element Nodes): 表示 HTML 或 XML 文档中的元素,如 <div><p> 等。

  • 属性节点(Attribute Nodes): 表示元素的属性,如 class、id 等。

  • 文本节点(Text Nodes): 表示元素的文本内容。

想要在 JavaScript 中获取 HTML、CSS 节点,也就是元素,就需要使用一些 DOM API 提供的方法来获取文档中的元素。

常见的方法包括:

  1. getElementById: 通过元素的 ID 获取元素。

var element = document.getElementById('myElement');
  1. getElementsByClassName: 通过类名获取元素。

var elements = document.getElementsByClassName('myClass');
  1. getElementsByTagName: 通过标签名获取元素。

var paragraphs = document.getElementsByTag

一旦获取了元素,你就可以通过 DOM 提供的方法来操作它。

例如,你可以改变元素的样式、修改其文本内容、添加或删除子元素等。

// 修改元素文本内容
element.innerHTML = '新的文本内容';
​
// 添加新的子元素
var newElement = document.createElement('div');
element.appendChild(newElement);
​
// 移除子元素
var childElement = element.firstChild;
element.removeChild(childElement);

常用的DOM对象方法:

方法描述
getElementById()返回带有指定ID的元素
getElementsByTagName()返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)
getElementByClassName()返回包含带有指定类名的所有元素的节点列表
appendChild()把新的子节点日俺家到指定节点
removeChild()删除子节点
replaceChild()替换子节点
insertBefore()在指定的子节点前面插入新的子节点
createAttribute()创建属性节点
createElement()创建元素节点
createTextNode()创建文本节点
getAttribute()返回指定的属性值
setAttribute()把指定属性设置或修改为指定的值

通过 DOM 修改元素的样式,例如改变颜色、大小等,如:

// 修改元素样式
element.style.color = 'red';
element.style.fontSize = '20px';

通过 DOM,你可以监听和响应用户的交互事件,例如点击、输入等。这使得你能够创建交互性更强的页面。

// 监听点击事件
element.addEventListener('click', function () {
    console.log('元素被点击了!');
});

JS DOM 基础内容的使用示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS DOM 练习</title>
</head>
<body>
    <div id="box1">这是一个ID选择器标签</div>
    <div class="box2">这是一个类选择器标签</div>
    <div>普通的div标签</div>
    <button>点击按钮</button>
    <script>
        var element_id = document.getElementById('box1');
        console.log(element_id);
​
        var element_class = document.getElementsByClassName('box2')[0];
        console.log(element_class);
        var element_tag = document.getElementsByTagName('div')[2   ];
        console.log(element_tag);
​
        element_id.innerHTML = '<a href="#">跳转链接</a>';//返回纯文本并能解析文本中的语义
        element_class.innerText = '<a href="#">跳转链接</a>';//返回纯文本但不能解析文本内容
        
        element_tag.style.color = 'red';
        element_tag.style.fontSize = '20px';
​
        //DOM属性绑定事件
        var button_element = document.getElementsByTagName('button')[0];
        console.log(button_element);
        // button_element.onclick = function() {
        //     alert('DOM 属性 按键触发');
        // }
        button_element.addEventListener('click', function() {
            alert('通过addEventListener 触发按键');
        })
    </script>
</body>
</html>
表格增删查改操作
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表格的增删查改</title>
​
    <style>
        table {
            width: 100%;
            border-collapse: collapse;
            margin-top: 20px;
        }
​
        th,td {
            border: 1px solid #ddd;
            border-collapse:collapse;
            text-align: center;
            padding: 8px;
        }
        th {
            background-color: #ddd;
        }
        button {
            margin-left: 5px;
        }
    </style>
</head>
<body>
    <h1 style="text-align: center;">表格的增删改查</h1>
    <button οnclick="addRow()">新增数据</button>
    <table id="table">
        <tr>
            <th>姓名</th>
            <th>联系方式</th>
            <th>操作</th>
        </tr>
        <tr>
            <td>蕉太狼</td>
            <td>12345</td>
            <td>
                <button οnclick="editRow(this)">编辑</button><button οnclick="deleteRow(this)">删除</button>
            </td>
        </tr>
    </table>
    <script src="./js/table.js">
​
    </script>
</body>
</html>

table.js文件内容:

//新增数据函数
function addRow() {
    var table = document.getElementById('table');
    //console.log(table);
    //获取插入的位置
    var length = table.rows.length;
    //插入行节点
    var newRow = table.insertRow(length);
    //插入列节点对象
    var nameCol = newRow.insertCell(0);
    var phoneCol = newRow.insertCell(1);
    var actionCol = newRow.insertCell(2);
​
    //修改节点文本内容
    nameCol.innerHTML = '未命名';
    phoneCol.innerHTML = '无联系方式';
    actionCol.innerHTML = '<button οnclick="editRow(this)">编辑</button><button οnclick="deleteRow(this)">删除</button>';
}
​
//删除数据函数
function deleteRow(button) {
    var row = button.parentNode.parentNode;
    row.parentNode.removeChild(row);
}
​
//编辑数据函数
function editRow(button) {
    var row = button.parentNode.parentNode;
    var name = row.cells[0];
    var phone = row.cells[1];
​
    var inputName = prompt("请输入名字:");
    var inputPhone = prompt("请输入联系方式:");
    
    name.innerHTML = inputName;
    phone.innerHTML = inputPhone;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值