前端中的Javascript

前端中的Javascript

javascript定义方式

  1. 内联JavaScript

    • 直接在HTML元素的事件属性中编写JavaScript代码

    • <body><h1>Hello, World!</h1><button onclick="alert('Button clicked!')">Click Me</button>
      </body>
      
  2. 内部JavaScript

    • 可以直接在HTML文件中使用<script>标签来编写JavaScript代码

    • 放置在<head>内的<script>标签会在页面加载过程中被下载和解析,但在页面内容渲染之前执行

    • 放置在<body>结尾处的<script>标签会在页面内容加载完毕后执行

    • 直接放在HTML文件的顶部会在页面加载时立即执行脚本

    • 放在HTML标签之外被视为无效内容

    • <body><h1>Hello, World!</h1><script>// 这里是JavaScript代码alert('Hello from inline JavaScript!');</script>
      </body>
      
  3. 外部JavaScript文件

    • 可以将JavaScript代码放在一个外部文件中,然后在HTML文件中通过<script>标签的src属性引用该文件。

    • <body><h1>Hello, World!</h1><!-- 引用外部JavaScript文件 --><script src="script.js"></script>
      </body>
      
  4. <script>标签的deferasync属性

    • 当引用外部JavaScript文件时,可以使用deferasync属性来控制脚本的加载和执行时机。

      • defer: 脚本会在文档解析完成后执行,但会在DOMContentLoaded事件之前执行。

      • async: 脚本会在下载完成后立即执行,可能会中断文档的解析。

      • <!-- 使用defer -->
        <script src="script1.js" defer></script>
        <!-- 使用async -->
        <script src="script2.js" async></script>
        

DOM(文档对象模型)

基本概念

  • 文档:DOM的核心是文档,通常是HTML或XML文档。
  • 节点:文档中的每个部分都是一个节点,包括元素节点、文本节点、属性节点等。
  • 树状结构:DOM将文档表示为一个树状结构,每个节点都是树中的一个分支或叶子。

节点类型

  • 文档节点(Document):整个文档的根节点。
  • 元素节点(Element):HTML或XML中的标签,如<div><p>等。
  • 文本节点(Text):元素中的文本内容。
  • 属性节点(Attr):元素的属性,如<img src="image.jpg">中的src
  • 注释节点(Comment):HTML或XML中的注释。

内置对象

window 对象

  • window 是浏览器环境的全局对象,代表浏览器窗口。它提供了许多与浏览器窗口相关的方法和属性。

  • 常用属性方法

    • window.location:获取或设置当前页面的URL。
    • window.history:操作浏览器的历史记录。
    • window.localStoragewindow.sessionStorage:用于在浏览器中存储数据。
    • window.alert()window.confirm()window.prompt():显示弹窗。
    • window.setTimeout()window.setInterval():定时器。
    window.location.href = "https://www.example.com"; // 跳转到新页面window.history.back(); // 返回上一页
    window.history.forward(); // 前进到下一页localStorage.setItem("key", "value"); // 存储数据
    const value = localStorage.getItem("key"); // 获取数据window.alert("这是一个提示框");
    const result = window.confirm("你确定吗?");
    const name = window.prompt("请输入你的名字");setTimeout(() => {console.log("2秒后执行");
    }, 2000);setInterval(() => {console.log("每隔1秒执行一次");
    }, 1000);
    

JavaScript操作网页

JavaScript 是一种强大的脚本语言,广泛用于操作 HTML 网页的内容、结构和样式。通过 JavaScript,可以实现动态更新网页内容、响应用户交互、修改 DOM(文档对象模型)等操作。

获取HTML元素

  1. 通过 id 获取元素

    • 使用 document.getElementById() 方法获取具有特定 id 的元素。

    • <p id="myParagraph">Hello, World!</p>
      <script>let element = document.getElementById("myParagraph");console.log(element.innerHTML); // 输出: Hello, World!
      </script>
      
  2. 通过 class 获取元素

    • 使用 document.getElementsByClassName() 方法获取具有特定 class 的元素集合。

    • <p class="myClass">Paragraph 1</p>
      <p class="myClass">Paragraph 2</p>
      <script>let elements = document.getElementsByClassName("myClass");console.log(elements[0].innerHTML); // 输出: Paragraph 1
      </script>
      
  3. 通过标签名获取元素

    • 使用 document.getElementsByTagName() 方法获取具有特定标签名的元素集合。

    • <div>Div 1</div>
      <div>Div 2</div>
      <script>let divs = document.getElementsByTagName("div");console.log(divs[1].innerHTML); // 输出: Div 2
      </script>
      
  4. 通过 CSS 选择器获取元素

    • 使用 document.querySelector()document.querySelectorAll() 方法通过 CSS 选择器获取元素。

      • querySelector():返回第一个匹配的元素。
      • querySelectorAll():返回所有匹配的元素集合。
    • <p class="myClass">Paragraph 1</p>
      <p class="myClass">Paragraph 2</p>
      <script>let firstParagraph = document.querySelector(".myClass");console.log(firstParagraph.innerHTML); // 输出: Paragraph 1let allParagraphs = document.querySelectorAll(".myClass");allParagraphs.forEach(p => console.log(p.innerHTML)); // 输出: Paragraph 1 和 Paragraph 2
      </script>
      

修改HTML内容

  1. 使用 innerHTMLtextContent 属性修改元素的内容。

    • innerHTML:可以解析 HTML 标签。

    • textContent:只处理纯文本。

    • <p id="myParagraph">Hello, World!</p>
      <script>let element = document.getElementById("myParagraph");element.innerHTML = "Hello, JavaScript!"; // 修改内容console.log(element.textContent); // 输出: Hello, JavaScript!
      </script>
      
  2. 修改元素属性

    • 使用 setAttribute() 或直接访问属性来修改元素的属性。

    • <img id="myImage" src="old.jpg" alt="Old Image">
      <script>let image = document.getElementById("myImage");image.src = "new.jpg"; // 直接修改属性image.setAttribute("alt", "New Image"); // 使用 setAttribute
      </script>
      
  3. 修改元素样式

    • 通过 style 属性修改元素的 CSS 样式。

    • <p id="myParagraph">Hello, World!</p>
      <script>let element = document.getElementById("myParagraph");element.style.color = "red"; // 修改颜色element.style.fontSize = "20px"; // 修改字体大小
      </script>
      

动态创建和删除元素

  1. 创建元素

    • 使用 document.createElement() 创建新元素,然后使用 appendChild()insertBefore() 将其添加到 DOM 中。

    • <div id="container"></div>
      <script>let newParagraph = document.createElement("p");newParagraph.textContent = "This is a new paragraph.";document.getElementById("container").appendChild(newParagraph);
      </script>
      
  2. 删除元素

    • 使用 removeChild() 方法删除元素。

    • <div id="container"><p id="oldParagraph">This is an old paragraph.</p>
      </div>
      <script>let container = document.getElementById("container");let oldParagraph = document.getElementById("oldParagraph");container.removeChild(oldParagraph); // 删除元素
      </script>
      

绑定事件处理程序

  1. 直接将事件处理函数赋值给元素的 on 事件属性(如 onclickonmouseover 等)。

    • const button = document.getElementById("myButton");
      button.onclick = function () {alert("按钮被点击了!");
      };
      
    • 这种方式只能为同一个事件绑定一个处理函数。如果多次赋值,后面的会覆盖前面的。

  2. 使用 addEventListener() 方法为元素添加事件监听器

    • <button id="myButton">Click Me</button>
      <script>let button = document.getElementById("myButton");button.addEventListener("click", function() {alert("Button clicked!");});
      </script>
      
      • click:点击事件。
      • mouseover:鼠标悬停事件。
      • keydown:键盘按下事件。
      • load:页面加载完成事件。
    • 这是推荐的方式,因为它可以绑定多个处理函数,且不会覆盖已有的事件处理程序。

  3. 使用已有函数进行绑定

    • 注意绑定已有函数不能加括号,应该直接写函数名称

      • 在HTML标签属性中如果引用函数则需要加上括号

      • <input type="button" onclick="add()" value="按钮">//浏览器会将其解析为以下形式
        button.onclick = function(event) {add(); // 执行 add 函数
        };
        //后声明的会覆盖先声明的
        
    • 两种方式绑定已有函数

    • function add() {console.log("按钮被点击了");
      }const a = document.getElementById("myButton");
      a.onclick = add(); // 错误:add() 会立即执行,返回值赋值给 onclickconst a = document.getElementById("myButton");
      a.onclick = add; // 正确:将函数引用赋值给 onclickconst a = document.getElementById("myButton");
      a.addEventListener("click", add);
      
    • 如果函数需要传递参数,可以使用匿名函数或 bind 方法。

      • 使用匿名函数

        • function add(message) {console.log(message);
          }const a = document.getElementById("myButton");
          a.onclick = function () {add("按钮被点击了");
          };
          
      • 使用 bind

        • function add(message) {console.log(message);
          }const a = document.getElementById("myButton");
          a.onclick = add.bind(null, "按钮被点击了");
          

表单操作

  1. 使用 value 属性获取表单元素的值。

    • <input type="text" id="myInput" value="Hello">
      <button id="myButton">Get Value</button>
      <script>let button = document.getElementById("myButton");button.addEventListener("click", function() {let input = document.getElementById("myInput");console.log(input.value); // 输出输入框的值});
      </script>
      
  2. 提交表单

    • 使用 submit() 方法提交表单。

    • <form id="myForm"><input type="text" name="username"><button type="submit">Submit</button>
      </form>
      <script>let form = document.getElementById("myForm");form.addEventListener("submit", function(event) {event.preventDefault(); // 阻止默认提交行为alert("Form submitted!");});
      </script>
      

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NVM:安装配置使用

一、简介 在实际的开发和学习中可能会遇到不同项目的 node 版本不同,而出现的兼容性问题。 而 nvm 就可以很好的解决这个问题,它可以在同一台机器上下管理多个 node 版本,使得程序员可以轻松地安装、卸载和切换不同的 node 版本。 在下载和配置 nvm 前,需要在控制面板中先删…

硬盘科普,M.2,PCI-E,NVMe 傻傻分不清

首先从三个层面去理解这个问题:物理接口,通道,协议 1:物理接口(相当于通讯中的电,光口) 大白话- 物理规格,像是 公路,铁路 专门跑PCI-E通道的那个物理接口:扩展性极强,可以插显卡的PCI-E X16的那个物理接口,或者插网卡,声卡的那个PCI-E X1那个物理接口,都是属于一类…

第二届长城杯ciscn半决赛awdp pwn以及应急响应wp

这次半决赛还真是状况频出,先是上午全场靶机断联了2轮,下午的应急又在坐大牢,还好是后面捋顺了逻辑做出来了,下半场干了个赛区第二,总成绩第四,这回是真燃尽了 上半场AWDP typo fix 一开始一直在改这道结果后面才发现那个prompt是真的好改,白浪费了3轮。。。 进入程序是…

LLM Assistance for Memory Safety

LLM Assistance for Memory SafetyMohammed, Nausheen, et al. "LLM Assistance for Memory Safety." 2025 IEEE/ACM 47th International Conference on Software Engineering (ICSE). IEEE Computer Society, 2024.Introduction 在软件安全的漏洞中,内存安全是主要…

『Plotly实战指南』--折线图绘制进阶篇

上一篇介绍了Plotly绘制折线图的基础知识和数据预处理的技巧, 本文将重点探讨如何利用Plotly实现多线折线图的布局设计以及动态折线图的实现, 让我们一起掌握进阶的折线图绘制技巧。 1. 多折线图布局 在实际的数据分析场景中,常常需要同时展示多组数据,例如对比不同产品的销…

使用gradio快速实现聊天机器人

我们可以使用gradio库通过低代码的方式快速实现聊天机器人界面及交互: import gradio as gr from ollama import chatdef predict(message,history):stream = chat(model="deepseek-r1:1.5b",messages=[{"role":"user","content":mess…

Edge浏览器登录微软账户报错0x80190001的解决办法

问题 0x80190001是什么错误?有用户在Edge浏览器上登录微软账户遇到了这个错误代码,这是什么意思?要如何解决呢?一个比较靠谱的解决办法解决方式1、下载一个finder(抓包软件)官网下载地址(最新版本):https://www.telerik.com/download/fiddler2、直接安装就好,选择左上…

2025年项目管理软件革命:7大工具重新定义团队协作

本文深度解析2025年项目管理工具的技术革新与市场格局,聚焦AI、量子计算、混合现实等技术对团队协作模式的颠覆性影响。一、2025年项目管理生态的三大颠覆性变化 在生成式AI、量子计算与混合现实技术推动下,项目管理工具正经历三大变革:决策权转移:AI从辅助工具升级为“虚拟…

【前瞻技术布局】京东零售广告创意:引入场域目标的创意图片生成

作者:京东零售 冯伟WWW2025: CTR-Driven Advertising Image Generation with Multimodal Large Language Models 论文链接:https://arxiv.org/pdf/2502.06823 代码链接:https://github.com/Chenguoz/CAIG 摘要:在电商平台中,广告图片对于吸引用户注意力和提高广告效果至关…

【达达秒送】AI运营视觉设计实战总结

作者:京东零售 刘潇蔓 全篇将从4个方面为大家系统介绍,我们如何使用AI,在运营活动中使用技法提质提效的… 1、AI在运营设计中的优势2、典型应用场景&案例3、AI工具核心关键词公式4、避坑指南:AI落地问题

vue3 slot 具名插槽

一、情景 一个组件用多个子组件,子组件样式相同 二、作用 父组件传递数据和格式给子组件 三、语法 1、子组件(挖坑)<slot name="title">默认标题</slot> <slot name="content">默认内容</slot>2、父组件(填坑) 用语法糖 #<Cat…

INFINI Labs 产品更新 - Coco AI – 增强 AI 搜索、API 管理与性能优化等

INFINI Labs 产品更新发布!此次更新涵盖 Coco AI 、Easysearch 等产品多项重要升级,重点提升 AI 搜索能力、易用性及企业级优化。Coco AI v0.2 作为 开源、跨平台的 AI 搜索工具,新增 APP 自动更新提示、API Token 管理、文档处理优化 等功能。 INFINI Easysearch v1.11.1 集…