C1能力认证训练题解析 _ 第四部分 _ Web进阶(2)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: C1能力认证训练题解析 _ 第四部分 _ Web进阶(2)

五、事件基础

事件绑定方式:


1. 方式一:行内事件属性赋值

<button onclick="alert('行内事件属性赋值')">点击按钮</button>

2. 方式二:事件属性赋值


var btn = document.querySelector('button');
btn.onclick = function() {
  alert('事件属性赋值')
}

3. 方式三:事件监听


//格式:addEventListener(type, listener, useCapture)
//type: 事件类型
//listener: 监听器(处理程序)
//useCapture: 默认为false,设置为true时,不会因冒泡触发监听器
const btn = document.querySelector('button');
btn.addEventListener('click', function() {
  alert('事件监听')
})

(1)实现点击按钮,更改按钮内容效果,请补全横线处代码。


<button class="btn">点击我</button>
<script>
document.querySelector('.btn').________ ('click', function() {
    this.innerText = '我被点击了'
})
</script>

答案:addEventListener


此处需要为按钮绑定点击事件,根据代码形式可知,此处应使用事件监听方法。


(2)实现点击按钮,更改按钮内容效果,请补全横线处代码。


<div class="box">点击这个盒子</div>
<script>
    document.querySelector('.box').________ = function() {
        this.style.backgroundColor = '#000'
        this.style.color = '#fff'
        this.innerText = '盒子黑了'
    }
</script>

答案:onclick


此处使用事件属性赋值的方式绑定点击事件。


(3)实现点击变身按钮,弹出变身台词,请补全横线处代码。


<button>变身</button>
<script>
    var btn = document.querySelector('button')
    btn.addEventListener('click', ________)
    function rider() {
        alert("胜利的法则已经确定了!")
    }
</script>

答案:rider


由题知,点击按钮需要弹出对话框,addEventListener方法第二个参数可以填写对应函数名进行监听,注意函数名后不需要括号。


(4)点击输出数字按钮,最终输出的数字是________。


<button>输出数字</button>
<script>
    var btn = document.querySelector('button')
    btn.onclick = foo2
    btn.onclick = foo1
    function foo1() {
        console.log(111)
    }
    function foo2() {
        console.log(222)
    }
</script>

答案:111


使用事件属性绑定两个事件处理程序,只会执行最后一个。


(5)代码如下,点击一次按钮,p元素中显示的数字是________。


<button >按钮</button>
<p>0</p>
<script>
  var btn = document.querySelector('button')
  var num = 0
  btn.addEventListener('click', function() {
    num++
    document.querySelector('p').innerHTML = num
  })
  btn.addEventListener('click', function() {
    num++
    document.querySelector('p').innerHTML = num
  })
</script>

答案:2


addEventListener为事件监听方法,可以调用多次事件处理程序,所以num执行了两次加法运算。


六、鼠标及键盘事件

1. 常用鼠标事件

image.png

       PS:事件处理程序中的this指代当前操作元素。


2. 常用键盘事件

image.png

3. 常用键盘属性事件

image.png

(1)实现点击按钮,弹出“已点击”提示,补全代码。

var btn = document.querySelector('button');
btn.addEventListener('________', showPublish);
function showPublish() {
  alert('已点击');
}

答案:click


addEventListener方法第一个参数为事件名称,此处应为对应的点击事件名称。


(2)点击按钮,弹框显示对应按钮中文字,补全代码。


<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<script>
  var btns = document.querySelectorAll('button')
  for (var idx = 0; idx < btns.length; idx++) {
    btns[idx].addEventListener('click', function() {
      alert(________.innerHTML)
    })
  }
</script>

答案:this


横线处指的是当前节点,此处需要一个能指代当前节点的变量。


(3)鼠标移出span元素时,字体大小是________px。


<span>五谷丰登</span>
<script>
    var span = document.querySelector('span')
    span.addEventListener('mouseenter', function() {
        this.style.fontSize = '16px'
    })
    span.addEventListener('mouseleave', function() {
        this.style.fontSize = '14px'
    })
</script>

答案:14


mouseleave代表鼠标移出事件。


(4)补全代码 ,实现在文本框中输入内容时,唐僧先于白龙马输出。


<input type="text" />
<script>
  var input = document.querySelector('input')
  input.addEventListener('________', function() {
    console.log('白龙马')
  })
  input.addEventListener('keypress', function() {
    console.log('唐僧')
  })
</script>

答案:keyup


常用键盘事件执行顺序为:keydown->keypress->keyup。


(5)在input输入框中点击回车后,弹出登录成功提示,补全代码。


<input type="text">
<script>
  var input = document.querySelector('input')
  input.addEventListener('keyup', function(event) {
    if (event.key=== '________') {
      alert('登录成功')
    }
  })
</script>

答案:Enter


event.key返回按键标识符,此处应为对应的回车键标识符。


七、窗口事件

常用鼠标事件:

image.png

(1)实现窗口大小发生变化时,重置div元素高度为当前窗口高度的一半,请补全横线处代码。


<style>
    .box {
        width: 200px;
        height: 500px;
        background-color: blue;
    }
</style>
<div class="box"></div>
<script>
  window.addEventListener('________', function() {
      document.querySelector('.box').style.height = window.innerHeight/2 + 'px'
  })
</script>

答案:resize


此处需要监听窗口大小的变化,横线处应为对应的窗口大小改变事件名。


(2)实现窗口滚动时,类名为top的元素固定在顶部,请补全横线处代码。


<style>
    .box {height: 3000px;}
    .top {width: 200px;height: 200px;background-color: gray;}
</style>
<div class="box">
    <span>我是顶部</span>
    <div class="top">顶部元素</div>
</div>
<script>
  window.addEventListener('________', function() {
      document.querySelector('.top').style.position = 'fixed'
  })
</script>

答案:scroll


此处需要监听窗口滚动变化,横线处应为对应的元素滚动事件名。


(3)将h1元素中文字改为“欢迎光临”,请补全横线处代码。


<script>
  window.addEventListener('________', function() {
    document.querySelector('h1').innerText = "欢迎光临"
  })
</script>
<h1>等待中</h1>

答案:load


由于代码中的js写在了h1元素上方,所以需要等待页面加载完成才能获取到此元素,此处需使用页面加载完成时触发的事件。


(4)代码如下,最后输出的num数字是________。


<script>
  var num = 0
  function add() {
    if(document.querySelector('.box')) {
      num++
    }
    console.log(num)
  }
  add()
  window.addEventListener('load', function() {
    add()
  })
  add()
</script>
<div class="box"></div>

答案:1


add方法中,只有获取到box节点时才会对num加1;


box节点在JS代码下方,只有在load事件中的add方法才能获取到box节点,所以最终num只会执行一次相加。


八、BOM window 对象

1. window对象:

image.png

image.png


2. location 对象:

image.png

3. history 对象:

image.png

4. navigator对象:

image.png

5. screen对象:

image.png


(1)补全代码,完成点击按钮返回顶部的功能。


<style>
  .box { height: 3000px; }
  .btn { position: fixed;bottom: 50px;right: 50px; }
</style>
<div class="box"><p>我是顶部</p></div>
<button class="btn">返回顶部</button>
<script>
  var btn = document.querySelector('.btn')
  btn.addEventListener('click', function() {
    scrollTo(0,________)
  })
</script>

答案:0


返回顶部需要使用scrollTo方法,scrollTo的两个参数为窗口横坐标和纵坐标位置,此处应为顶部对应的纵坐标大小。顶部为(0,0)


(2)判断当前网页是否为http协议,如果是,则在当前页面跳转到https协议的页面,补全代码。

<script>
  if (location.________ === 'http:') {
  window.open('https://newsite.com', 'self')
  }
</script>

答案:protocol


此处需要判断网址协议,横线处应使用location对象中代表网址协议的属性。


(3)当前操作系统是否为windows,如果是windows则跳转对应下载地址,补全代码。


<button>下载VS code</button>
<script>
  if (navigator.________ === 'Win32') {
      document.querySelector('button').addEventListener('click', function() {
          location.href= 'https://code.visualstudio.com/docs/?dv=win64user'
      })
  }
</script>

答案:platform


此处需要判断当前系统类型,横线处应使用navigator中代表当前运行操作系统的属性。


(4)div元素的字体大小为________px,补全代码。


<style>
  .box {
    font-size: 16px;
  }
</style>
<div class="box">宽度比较</div>
<script>
  var box = document.querySelector('.box')
  if (screen.width < window.innerWidth) {
    box.style.fontSize = '12px'
  }
</script>

答案:16

screen.width代表屏幕宽度,window.innerWidth代表浏览器窗口宽度,浏览器宽度不可能超过屏幕宽度。


九、BOM 定时器

image.png

(1)实现页面等待2.5秒后显示对话框,请补全代码。


<script>
  setTimeout(showAlert, _____)
  function showAlert() {
    alert('你的小可爱突然出现')
  }
</script>

答案:2500


setTimeout设置的时间单位为毫秒,1秒 = 1000毫秒


(2)监听是否点击支付按钮,若点击支付则弹出支付成功提示,请补全代码。


<button>支付</button>
<script>
  var btn = document.querySelector('button')
  var flag = false
  btn.onclick = function() {
    flag = true
  }
  ________(function() {
    if (flag) {
      alert('支付成功')
    }
  }, 1000)
</script>

答案:setInterval


用户点击支付按钮的时机不确定,所以需要多次查询用户是否点击(点击后,flag为true),需要使用周期性定时器。


(3)代码如下,实现点击按钮停止定时器的功能,请补全代码。

<h1>0秒</h1>
<button>停止</button>
<script>
  var timer = setTimeout(function() {
    document.querySelector('h1').innerText = '5秒过去了'
  }, 5000);
  document.querySelector('button').addEventListener('click', function() {
    document.querySelector('h1').innerText = '提前停止'
    ________(timer)
  })
</script>

答案:clearTimeout


此处使用了setTimeout定时器,为了实现定时器的提前停止,需要使用其对应的清除定时器方法。

相关文章
|
13天前
|
机器学习/深度学习 人工智能 算法
DeepSeek技术报告解析:为什么DeepSeek-R1 可以用低成本训练出高效的模型
DeepSeek-R1 通过创新的训练策略实现了显著的成本降低,同时保持了卓越的模型性能。本文将详细分析其核心训练方法。
343 11
DeepSeek技术报告解析:为什么DeepSeek-R1 可以用低成本训练出高效的模型
|
3月前
|
JSON JavaScript 前端开发
蓝桥杯web组赛题解析和杯赛技巧
本文作者是一位自学前端两年半的大一学生,在第十五届蓝桥杯Web组比赛中获得省一和国三。文章详细解析了比赛题纲,涵盖HTML、CSS、JavaScript、Echarts和Vue等技术要点,并分享了备赛技巧和比赛经验。作者强调了多写代码和解题思路的重要性,同时提供了省赛和国赛的具体流程及注意事项。希望对参赛者有所帮助。
171 3
|
3月前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
119 2
|
3月前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
143 4
|
4月前
|
前端开发 开发者 容器
构建响应式Web界面:Flexbox与Grid布局的深度解析
【10月更文挑战第11天】本文深入解析了CSS3中的Flexbox和Grid布局,探讨了它们的特点、应用场景及使用方法。Flexbox适用于一维布局,如导航栏;Grid布局则适用于二维布局,如复杂网格。通过示例代码和核心属性介绍,帮助开发者灵活构建响应式Web界面。
75 5
|
4月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
268 3
|
4月前
|
运维 负载均衡 安全
深度解析:Python Web前后端分离架构中WebSocket的选型与实现策略
深度解析:Python Web前后端分离架构中WebSocket的选型与实现策略
176 0
|
1月前
|
自然语言处理 数据处理 索引
mindspeed-llm源码解析(一)preprocess_data
mindspeed-llm是昇腾模型套件代码仓,原来叫"modelLink"。这篇文章带大家阅读一下数据处理脚本preprocess_data.py(基于1.0.0分支),数据处理是模型训练的第一步,经常会用到。
53 0
|
2月前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
|
2月前
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析

热门文章

最新文章

  • 1
    打造高效的Web Scraper:Python与Selenium的完美结合
    13
  • 2
    Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
    26
  • 3
    AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
    20
  • 4
    【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
    54
  • 5
    部署使用 CHAT-NEXT-WEB 基于 Deepseek
    342
  • 6
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 7
    java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
    40
  • 8
    零基础构建开源项目OpenIM桌面应用和pc web- Electron篇
    28
  • 9
    【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
    22
  • 10
    FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
    55
  • 推荐镜像

    更多