HTML与JavaScript联动

news2024/11/17 15:57:58

目录

一、数组(增删查改)

1.创建数组

2. 增加数组元素

3.删除数组中的元素

4.查看数组元素

5.修改数组元素

二、创建方法

1.函数

2.作用域

3.作用域链

三、对象

1.使用 字面量 创建对象 [常用]

2.使用 new Object 创建对象

四、JavaScript 的对象和 Java 的对象的区别

五、JS 操作 DOM

1.得到控件

2.操作元素

2.1 获取元素值

2.2 设置元素的值

2.3 innerText /innerHTML

3.原生猜数字游戏

4.jquery版本猜数字游戏

5.聚合搜索

6.表白墙 


首先,我想大家推荐一个可以用来查询JavaScript语法的一个网站:链接:lJavaScript - 学习 Web 开发 | MDN (mozilla.org)

一、数组(增删查改)

1.创建数组

1️⃣使用 new 关键字创建

// Array 的 A 要大写
var arr = new Array();

2️⃣使用字面量方式创建 [常用]

var arr = [];
var arr2 = [1, 2, 'haha', false]; // 数组中保存的内容称为 "元素"

在数组中,我们可以存放任意类型的元素

2. 增加数组元素

使用 push 进行追加元素

代码示例: 给定一个数组, 把数组中的奇数放到一个 newArr 中.

var arr = [9, 5, 2, 7, 3, 6, 8];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
    if (arr[i] % 2 != 0) {
        newArr.push(arr[i]);
   }
}
console.log(newArr);

3.删除数组中的元素

使用 splice 方法删除元素

var arr = new Array();
arr.push(1);
arr.push("hello");
arr.push(false);

arr.splice(1, 1);
console.log(arr.length);

for(var item of arr) {
    console.log(item);
}

 

4.查看数组元素

使用下标的方式访问数组元素(从 0 开始)

var arr = ['小猪佩奇', '小猪乔治', '小羊苏西'];
console.log(arr);
console.log(arr[0]);
console.log(arr[1]);
console.log(arr[2]);
arr[2] = '小猫凯迪';
console.log(arr);

❗❗注意:如果下标超出范围读取元素, 则结果为 undefined

var arr = new Array();
arr.push(1);
arr.push("hello");
arr.push(false);

console.log(arr[3]);//undefined

❗❗不要给数组名直接赋值, 此时数组中的所有元素都没了

var arr = ['小猪佩奇', '小猪乔治', '小羊苏西'];
arr = '小猫凯迪';

5.修改数组元素

直接修改

var arr = new Array();
arr.push(1);
arr.push("hello");
arr.push(false);

arr[1] = "hi";
console.log(arr.length);
for(var item of arr) {
    console.log(item);
}

二、创建方法

1.函数

// 创建函数/函数声明/函数定义
function 函数名(形参列表) {
    函数体
    return 返回值;
}
// 函数调用
函数名(实参列表)           // 不考虑返回值
返回值 = 函数名(实参列表)   // 考虑返回值
<body>

    <input type="botton" value="添 加" onclick="add('张三', '123')">&nbsp;&nbsp;&nbsp;
    <input type="botton" value="修 改" onclick="up('李四')">&nbsp;&nbsp;&nbsp;
    <input type="botton" value="删 除" >&nbsp;&nbsp;&nbsp;
    <input type="botton" value="查 询" >&nbsp;&nbsp;&nbsp;


    <script>

        //修改方法
        function up() {
            alert("执行了修改方法!");
        }

    </script>
    
</body>

1️⃣函数定义并不会执行函数体内容, 必须要调用才会执行. 调用几次就会执行几次. 

    <input type="botton" value=" 添 加" onclick="add('张三', '123')">&nbsp;&nbsp;&nbsp;
    <input type="botton" value=" 修 改" >&nbsp;&nbsp;&nbsp;
    <input type="botton" value=" 删 除" >&nbsp;&nbsp;&nbsp;
    <input type="botton" value=" 查 询" >&nbsp;&nbsp;&nbsp;


    <script>
        alert(111);
        //添加方法--不需要写参数类型
        function add(name, password) {
            alert("执行了添加方法!\n name=" +name+ "\n passord=" + password);
        }

    </script>

在进行页面加载的过程中是不会调用函数的:

 2️⃣在页面加载的过程中,如果想要触发函数,直接在全局 script 中调用add函数(可以不传参数,默认为unfined):

<body>

    <input type="botton" value="添 加" onclick="add('张三', '123')">&nbsp;&nbsp;&nbsp;
    <input type="botton" value="修 改" >&nbsp;&nbsp;&nbsp;
    <input type="botton" value="删 除" >&nbsp;&nbsp;&nbsp;
    <input type="botton" value="查 询" >&nbsp;&nbsp;&nbsp;


    <script>
        alert(111);
        //添加方法--不需要写参数类型
        function add(name, password) {
            alert("执行了添加方法!\n name=" +name+ "\n passord=" + password);
        }

        add();

    </script>
    
</body>

 3️⃣调用函数的时候进入函数内部执行, 函数结束时回到调用位置继续执行. 可以借助调试器来观察.并且函数的定义和调用的先后顺序没有要求. (这一点和变量不同, 变量必须先定义再使用)

// 调用函数
hello();
// 定义函数
function hello() {
    console.log("hello");
}

2.作用域

1️⃣全局作用域: 在整个 script 标签中, 或者单独的 js 文件中生效.

2️⃣局部作用域/函数作用域: 在函数内部生效.

// 全局变量
var num = 10;
console.log(num);
function test() {
    // 局部变量
    var num = 20;
    console.log(num);
}
function test2() {
    // 局部变量
    var num = 30;
    console.log(num);
}
test();
test2();
console.log(num);
// 执行结果
10
20
30
10

 ❗❗创建变量时如果不写 var, 则得到一个全局变量

function test() {
 num = 100;
}
test();
console.log(num);
// 执行结果
100

不写 var,会自动创建一个变量

3.作用域链

1️⃣函数可以定义在函数内部

2️⃣内层函数可以访问外层函数的局部变量.

内部函数可以访问外部函数的变量. 采取的是链式查找的方式. 从内到外依次进行查找.

var num = 1;
function test1() {
    var num = 10;
    function test2() {
        var num = 20;
        console.log(num);
   }
    test2();
}
test1();
// 执行结果
20

执行 console.log(num) 的时候, 会现在 test2 的局部作用域中查找 num. 如果没找到, 则继续去 test1 中查找. 如果还没找到, 就去全局作用域查找.

三、对象

在 JavaScript 中式没有类这个概念的;但是有对象的,一切皆对象

1.使用 字面量 创建对象 [常用]

var student = {
    id:1,
    name:"张三",
    password:"123",
    saylli:function() {
        alert("hi student");
    }
}

console.log(student.name);
student.saylli();
1️⃣使用 { } 创建对象
2️⃣属性和方法使用键值对的形式来组织.
3️⃣键值对之间使用 , 分割 . 最后一个属性后面的 , 可有可无
4️⃣键和值之间使用 : 分割 .
5️⃣方法的值是一个匿名函数

使用对象的属性和方法:

// 1. 使用 . 成员访问运算符来访问属性 `.` 可以理解成 "的"
console.log(student.name);
// 2. 使用 [ ] 访问属性, 此时属性需要加上引号
console.log(student['height']);
// 3. 调用方法, 别忘记加上 () 
student.sayHello();

2.使用 new Object 创建对象

var student = new Object(); // 和创建数组类似
student.name = "蔡徐坤";
student.height = 175;
student['weight'] = 170;
student.sayHello = function () {
    console.log("hello");
}
console.log(student.name);
console.log(student['weight']);
student.sayHello();

❗❗注意:使用 { } 创建的对象也可以随时使用 student.name = "蔡徐坤"; 这样的方式来新增属性.

四、JavaScript 的对象和 Java 的对象的区别

1️⃣JavaScript 没有 "类" 的概念

对象其实就是 "属性" + "方法" .

类相当于把一些具有共性的对象的属性和方法单独提取了出来, 相当于一个 "月饼模子",在 JavaScript 中的 "构造函数" 也能起到类似的效果,而且即使不是用构造函数, 也可以随时的通过 { } 的方式指定出一些对象

2️⃣JavaScript 对象不区分 "属性" 和 "方法"

JavaScript 中的函数是 "一等公民", 和普通的变量一样. 存储了函数的变量能够通过 ( ) 来进行调用执行.

3️⃣JavaScript 对象没有 private / public 等访问控制机制

对象中的属性都可以被外界随意访问.

4️⃣JavaScript 对象没有 "继承"

继承本质就是 "让两个对象建立关联". 或者说是让一个对象能够重用另一个对象的属性/方法

JavaScript 中使用 "原型" 机制实现类似的效果

5️⃣JavaScript 没有 "多态"

多态的本质在于 "程序猿不必关注具体的类型, 就能使用其中的某个方法".

C++ / Java 等静态类型的语言对于类型的约束和校验比较严格. 因此通过 子类继承父类, 并重写父类的方法的方式 来实现多态的效果.

但是在 JavaScript 中本身就支持动态类型 , 程序猿在使用对象的某个方法的时候本身也不需要对对象的类型做出明确区分. 因此并不需要在语法层面上支持多态

五、JS 操作 DOM

🙈什么是 DOM 树

一个页面的结构是一个树形结构, 称为 DOM .

1.得到控件

根据 id 得到 HTML 控件

document.getElementById(""元素id)

例如:开始默认百度的logo,点击更换按钮,换成搜狗的logo

<body>

    <img id="img_logo" src="https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png">

    <p></p>

    <input onclick="upImg()" type="button"  value=" 更换图片 ">

    <hr>

    <script>

        function upImg() {
            var sg_img = "https://dlweb.sogoucdn.com/pcsearch/web/index/images/logo_880x280_06c7476.png?v=628ed034";
            document.getElementById("img_logo").src = sg_img;
        }

    </script> 
</body>

2.操作元素

2.1 获取元素值

document.getElementById("username").value

2.2 设置元素的值

document.getElementById("username").value = "jva";

2.3 innerText /innerHTML

Element.innerText 属性表示一个节点及其后代的“渲染”文本内容

Element.innerHTML 属性设置或获取HTML语法表示的元素的后代

3.原生猜数字游戏

🌈在这里我们使用一个函数 Math.random() 来生成随机数

 Math.random() 范围为[0,1),假设我们现在需要的是[1,10]的整数,那我们改如何实现呢❓❓

1️⃣首先我们用乘积的形式设置随机数为0-10,并且使用 Math.floor 函数取整,即为[0,9]

Math.floor(Math.random()*10

2️⃣在使用加法来设置成[1,10]

1 + Math.floor(Math.random()*10);

整体代码:

<body>

    <div>
        <h2>猜数字游戏</h2>
        玩家输入一个 1-10 数字:<input id="input_num" type="text"><p></p>
        <input type="button" value=" 查看结果 " onclick="selectResult()">
        <div id="result_div">

        </div>
    </div>
    <hr>

    <script>

        function selectResult() {
            //产生随机数1-10
            var randomNum = 1 + Math.floor(Math.random()*10);
            var userInputNum = document.getElementById("input_num").value;
            var msg;
            if(randomNum == userInputNum) {
                msg="<h4>恭喜:猜对了</h4>";
            } else {
                msg="<h4>抱歉:猜错了。正确的数字是:"+randomNum+"</h4>"
            }
            document.getElementById("result_div").innerHTML = msg;
        }

    </script>
</body>

4.jquery版本猜数字游戏

使用原生版本也可以拿到控件,但是比较麻烦,代码比较长;这时候使用 jquery 来写的好处是:代码比较精简;兼容性好

1️⃣下载 jquery : 我将jquery1.9版本放在了我的博客资源里,大家可以去下载使用

2️⃣写代码的时候,让jquery.min.js和html文件处于同一目录,这样就可以使用 jquery 的操作方式操作元素

jquery进行处理兼容性的时候,处理的是拿组件的形式,内置的属性都是一样的:

//产生随机数1-10
var randomNum = 1 + Math.floor(Math.random()*10);

怎么进行拿组件呢❓❓❓设置DOM树的时候操作不一样

var userInputNum = jQuery("#input_num").val();
if(randomNum == userInputNum) {
   msg="<h4>恭喜:猜对了</h4>";
} else {
   msg="<h4>抱歉:猜错了。正确的数字是:"+randomNum+"</h4>"
}
jQuery("#result_div").html(msg);

 总体代码:

<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>JS-DemoIV</title>
    <script src="jquery.min.js"></script>
</head>
<body>

    <div>
        <h2>猜数字游戏</h2>
        玩家输入一个 1-10 数字:<input id="input_num" type="text"><p></p>
        <input type="button" value=" 查看结果 " onclick="selectResultJq()">
        <div id="result_div">

        </div>
    </div>
    <hr>
    <script>

        //jquery猜数字游戏
        function selectResultJq() {
            //产生随机数1-10
            var randomNum = 1 + Math.floor(Math.random()*10);
            var userInputNum = jQuery("#input_num").val();
            if(randomNum == userInputNum) {
                msg="<h4>恭喜:猜对了</h4>";
            } else {
                msg="<h4>抱歉:猜错了。正确的数字是:"+randomNum+"</h4>"
            }
            jQuery("#result_div").html(msg);
        }

    </script>
    
</body>

5.聚合搜索

<!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>
    <script src="jquery.min.js"></script>
</head>
<body>
    <div style="width: 100%;text-align: center;">
        <input type="button" value=" 必应 " onclick="upSearch('https://www.bing.com/')"> &nbsp;&nbsp;&nbsp;
        <input type="button" value=" 搜狗 " onclick="upSearch('https://www.sogou.com/')"> &nbsp;&nbsp;&nbsp;
        <input type="button" value=" 360 " onclick="upSearch('https://www.so.com/')"> &nbsp;&nbsp;&nbsp;
    </div>
    <hr>
    <iframe id="ifr" style="width: 100%;height: 600px;" src="https://www.bing.com/"></iframe>
    <script>
        function upSearch(url){
            jQuery("#ifr").attr("src",url);
        }
    </script>

</body>
</html>

6.表白墙 

<!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>
    <script src="jquery.min.js"></script>
</head>
<body>
    <div style="width: 100%;text-align: center;">
        <h2>表白墙</h2>
        谁&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:<input id="username"><p></p>
        对谁&nbsp;&nbsp;&nbsp;:<input id="tousername"><p></p>
        说什么:<input id="msg"><p></p>
        <input type="button" value=" 提 交 " onclick="mysub()"><p></p>
        <div id="div_allmsg">

        </div>
    </div>
    <script>
        function mysub(){
            var iptUserName = jQuery("#username");
            var iptToUserName = jQuery("#tousername");
            var iptMsg = jQuery("#msg");
            // 1.非空效验
            if(iptUserName.val().trim()==""){
                alert("请先输入您的名字!");
                iptUserName.focus();
                return;
            }
            if(iptToUserName.val().trim()==""){
                alert("请先输入对方的名字!");
                iptToUserName.focus();
                return;
            }
            if(iptMsg.val().trim()==""){
                alert("请先输入信息!");
                iptMsg.focus();
                return;
            }
            // 2.将内容展示在表白墙
            jQuery("#div_allmsg").append(iptUserName.val()+"对"+iptToUserName.val()+"说:"+iptMsg.val()+"<p></p>");
            // 3.清空输入的内容
            iptUserName.val("");
            iptToUserName.val("");
            iptMsg.val("");
        }
    </script>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/509304.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

thinkphp报错 in_array() expects parameter 2 to be array, object given

我的问题是 foreach ($books as $k > $v) { if (in_array($v[id], $book_id)) { //这个地方报错的 $books[$k][check] checked; }else { $books[$k][check] ; } } 这个问题是因为 你的变…

5.9-5.10学习总结

项目分析&#xff1a; 1.用户共有的&#xff1a; 登录&#xff0c;注册&#xff0c;忘记密码&#xff0c;个人资料&#xff0c;修改密码 个人资料&#xff1a;包括生日&#xff08;日期栏选择&#xff09;&#xff0c;手机号&#xff0c;邮箱&#xff0c;学号&#xff0c;姓…

网络路径下倾斜模型生产流程-空三计算,像控刺点

网络路径下倾斜模型生产流程-空三计算&#xff0c;像控刺点 1.新建工程 ①新建工程文件夹 确定本机的网络路径&#xff0c;如演示机为192.168.100.10 在网络路径下新建工程文件夹&#xff0c;如//192.168.100.10/e/YNPE27 在工程文件夹下&#xff0c;新建工程存储文件夹CC和照片…

docker安装与配置docker镜像加速器

文章目录 前言一、准备工作二、docker安装三、配置镜像加速器1.配置中科大镜像加速器2.配置阿里云镜像加速器 前言 我真的受不了虚拟机了&#xff0c;我电脑上有9个虚拟机&#xff0c;占了132G&#xff01;&#xff01;&#xff01;我还不敢随便删&#xff0c;怕到时候要用。。…

聚观早报 | 菜鸟回应明年赴港 IPO;谷歌即将发布最新 AI 大模型

今日要闻&#xff1a;菜鸟回应明年赴港 IPO&#xff1b;谷歌即将发布最新 AI 大模型&#xff1b;中国移动推出周杰伦数字人&#xff1b;“老头乐”销量冠军雷丁汽车申请破产&#xff1b;网信部门工作组进驻斗鱼平台 菜鸟回应明年赴港 IPO 近日&#xff0c;有消息称&#xff0c…

跟着我学 AI丨ChatGPT 详解

随着人工智能的发展&#xff0c;聊天机器人成为了一个备受关注的领域。而ChatGPT作为其中的佼佼者&#xff0c;其功能和技术水平也越来越受到人们的关注。那么&#xff0c;什么是ChatGPT&#xff1f;它又有哪些优点和限制呢&#xff1f; ChatGPT是一款基于自然语言处理技术开发…

zed2i相机内参标定

参考&#xff1a; https://blog.csdn.net/yanpeng_love/article/details/107166922 https://blog.csdn.net/weixin_41954990/article/details/127928852 参考以上连接先安装kalibr。 注意&#xff1a; python包装不上&#xff0c;换成&#xff1a;pip install出现pyx找不到…

React JSX

文章目录 React JSX使用 JSX独立文件JavaScript 表达式样式注释数组HTML 标签 vs. React 组件 React JSX React 使用 JSX 来替代常规的 JavaScript。 JSX 是一个看起来很像 XML 的 JavaScript 语法扩展。 我们不需要一定使用 JSX&#xff0c;但它有以下优点&#xff1a; JSX…

Linux共享库、动态库详解

目录 一.静态库 二.动态库 三.静态库的制作与使用 四.动态库的制作与使用 在日常编程中我们不想让别人看到我们写的源码&#xff0c;但还需要发给对方使用&#xff0c;在这种情况下我们引入了静态库动态库&#xff0c;让对方用调库的方式也可以实现我们写的代码的功能&…

2023天津Web前端开发培训就业排行榜(你对Web前端工程师了解多少)

2023天津Web前端开发培训就业排行榜。前端开发技术在多个开发领域得到了广泛的应用&#xff0c;现在对前端开发技术人员的需求越来越大&#xff0c;没有基础要学好前端开发技术知识&#xff0c;更需要系统的学习。今天给大家分享一下Web前端程序员&#xff0c;0基础学前端&…

React 安装

文章目录 React 安装使用实例实例解析 通过 npm 使用 React使用 create-react-app 快速构建 React 开发环境 React 安装 React 可以直接下载使用&#xff0c;下载包中也提供了很多学习的实例。 你也可以直接使用 BootCDN 的 React CDN 库&#xff0c;地址如下&#xff1a; &l…

matlab实现BP神经网络(完整DEMO)

本站原创文章&#xff0c;转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com 目录 一、BP神经网络Demo代码 1.1 代码整体思路 1.2 BP神经网络Demo代码 二、运行结果 2.1 拟合曲线 2.2训练误差与预测误差 三、相关文章 3.1-BP的入门学习目录&#xff1a;老饼…

中大型连锁企业如何以数字化驱动业务创新增长

随着互联网、IT技术的发展&#xff0c;数字化转型逐渐成为时代发展的浪潮&#xff0c;对于中大型连锁企业而言&#xff0c;抓住机遇、创新增长是企业发展的关键。面对新的市场形势&#xff0c;企业需要让线上数据流动起来&#xff0c;解决业务数据的运力和流通问题&#xff0c;…

第6章 静态代理

第6章 静态代理 把所有静态资源的访问改为访问nginx&#xff0c;而不是访问tomcat&#xff0c;这种方式叫静态代理。因为nginx更擅长于静态资源的处理&#xff0c;性能更好&#xff0c;效率更高。 ​ 所以在实际应用中&#xff0c;我们将静态资源比如图片、css、html、js等交…

什么是企业内容管理?

为什么出现企业内容管理&#xff1f; 在数字经济的宏观背景下&#xff0c;企业建立了各种应用系统以满足企业各业务的管理需求&#xff0c;这些系统每天都在产生大量的数据和信息资源&#xff0c;但在企业实践中存在很多数据或资源无法被应用系统获取、处理和共享。 比如发票…

电力需求侧管理系统是什么?

摘要&#xff1a;电力是国民经济和居民生活的命脉&#xff0c;为贯彻落实国家对于节能减排工作的总体部署&#xff0c;深入推进电力需求侧管理工作、本文从电力需求侧能效管理平台所要实现的功能与应用信息技术两个方面&#xff0c;着重介绍平台研究建立的节电效益计算分析模型…

CSO面对面丨对话海通证券,探讨数字金融行业安全运营

新技术的涌现带动了金融行业的数字化转型发展&#xff0c;同时也带来了更多安全挑战。一方面&#xff0c;金融科技大量采用新技术实现业务创新的同时&#xff0c;也给网络安全带来了更多隐性风险。另一方面&#xff0c;金融行业数字化转型的进一步普及&#xff0c;大量个人隐私…

Express 创建和使用render

1 创建项目 npm install -g express-generator express -e myapp //创建myapp项目npm i //安装依赖npm i nodemon -D //安装nodemon 修改package.json "scripts": {"start": "node ./bin/www","dev": "nodemon ./bin/www&quo…

接入sentry安装@sentry/webpack-plugin依赖报错(附遇到的其他小问题)

背景 项目需要接入sentry&#xff0c;使用的是vue2 vue-cli构建的&#xff0c;那么需要使用webpack构建的方式 见sentry官方文档 问题和尝试思路 根据文档安装sentry/webpack-plugin依赖的时候一直失败 出现两种报错 第一种&#xff1a;下载安装包https://downloads.sent…

C++跨平台开发工具CLion——使用任意编译器快速指南

CLion是一款专为开发C及C所设计的跨平台IDE&#xff0c;它是以IntelliJ为基础设计的&#xff0c;包含了许多智能功能来提高开发人员的生产力。这种强大的IDE帮助开发人员在Linux、OS X和Windows上来开发C/C&#xff0c;同时它还使用智能编辑器来提高代码质量、自动代码重构并且…