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

简介: 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定时器,为了实现定时器的提前停止,需要使用其对应的清除定时器方法。

相关文章
|
2天前
|
SQL 存储 数据可视化
Ganos H3地理网格能力解析与最佳实践
本文介绍了Ganos H3的相关功能,帮助读者快速了解Ganos地理网格的重要特性与应用实践。H3是Uber研发的一种覆盖全球表面的二维地理网格,采用了一种全球统一的、多层次的六边形网格体系来表示地球表面,这种地理网格技术在诸多业务场景中得到广泛应用。Ganos不仅提供了H3网格的全套功能,还支持与其它Ganos时空数据类型进行跨模联合分析,极大程度提升了客户对于时空数据的挖掘分析能力。
|
2天前
|
JSON JavaScript 数据格式
jwt-auth插件实现了基于JWT(JSON Web Tokens)进行认证鉴权的功能。
jwt-auth插件实现了基于JWT(JSON Web Tokens)进行认证鉴权的功能。
48 1
|
23小时前
|
存储 前端开发 JavaScript
Web前端主题色更换实现方式全解析(二)
Web前端主题色更换实现方式全解析(二)
|
1天前
|
存储 前端开发 JavaScript
Web前端主题色更换实现方式全解析(一)
Web前端主题色更换实现方式全解析(一)
|
2天前
|
负载均衡 Go 调度
使用Go语言构建高性能的Web服务器:协程与Channel的深度解析
在追求高性能Web服务的今天,Go语言以其强大的并发性能和简洁的语法赢得了开发者的青睐。本文将深入探讨Go语言在构建高性能Web服务器方面的应用,特别是协程(goroutine)和通道(channel)这两个核心概念。我们将通过示例代码,展示如何利用协程处理并发请求,并通过通道实现协程间的通信和同步,从而构建出高效、稳定的Web服务器。
|
2天前
|
安全 前端开发 Java
10:基于Servlet模拟用户登录功能的实现与解析-Java Web
10:基于Servlet模拟用户登录功能的实现与解析-Java Web
26 3
|
2天前
|
JSON 安全 API
【专栏】四种REST API身份验证方法:基本认证、OAuth、JSON Web Token(JWT)和API密钥
【4月更文挑战第28天】本文探讨了四种REST API身份验证方法:基本认证、OAuth、JSON Web Token(JWT)和API密钥。基本认证简单但不安全;OAuth适用于授权第三方应用;JWT提供安全的身份验证信息传递;API密钥适合内部使用。选择方法时需平衡安全性、用户体验和开发复杂性。
|
2天前
|
Java Spring
Javaweb之SpringBootWeb案例之事务进阶的详细解析
Javaweb之SpringBootWeb案例之事务进阶的详细解析
15 0
|
2天前
|
前端开发 开发者 UED
构建响应式Web界面:Flexbox与Grid布局的深度解析
【4月更文挑战第6天】 在现代前端开发中,为了适配不同设备并提供流畅的用户体验,理解并掌握响应式设计变得至关重要。本文将深入探讨两种主要的CSS布局模式——Flexbox和Grid。我们将剖析它们的核心概念、使用场景以及如何结合它们来创建复杂且灵活的响应式界面。通过实例演示和对比分析,帮助开发者提升界面布局技能,从而设计出能够适应多变设备的Web界面。
|
2天前
|
测试技术 API 智能硬件
语言模型在提升智能助手引用解析能力中的创新应用
【4月更文挑战第4天】苹果研究团队推出了ReALM,一种利用大型语言模型解决引用解析的新方法,提升智能助手理解用户意图和上下文的能力。ReALM将引用解析转化为语言建模问题,尤其擅长处理屏幕上的实体,比现有系统提升超5%,性能接近GPT-4但参数更少。其模块化设计易于集成,可在不同场景下扩展。然而,复杂查询处理和依赖上游数据检测器可能影响其准确性和稳定性。
69 6
语言模型在提升智能助手引用解析能力中的创新应用

推荐镜像

更多