蓝桥杯练习——拼出一个未来

选中 index.html 右键启动 Web Server 服务(Open with Live Server),让项目运行起来。接着,打开环境右侧的【Web 服务】,就可以在浏览器中看到如下效果:

初始效果

目标

完善 js/index.js 的 TODO 部分,实现以下目标:

  1. 将拖动的拼图块与目标拼图块的图片进行交换,这包括交换图片的 src 属性和 data-id 属性。待补充代码的 drop 函数中现有的两个变量解释如下:draggedPiece:代表被拖动的拼图块的图片元素的父元素。this:代表当前目标位置的拼图块的图片元素父元素。

拼图成功后的 DOM 如下,图片 srcaltdata-id 均按照 1-9 顺序排列

<div class="puzzle-container" id="puzzle-container">
  <div class="puzzle-piece" draggable="true">
    <img src="./images/img1.png"  data-id="1" />
  </div>
  <div class="puzzle-piece" draggable="true">
    <img src="./images/img2.png"  data-id="2" />
  </div>
  <!-- ... 省略部分代码 -->
  <div class="puzzle-piece" draggable="true">
    <img src="./images/img9.png"  data-id="9" />
  </div>
</div>

  1. 显示/隐藏成功消息:拼图成功则设置成功消息元素(id=success-message)的 class 名为 show,否则该元素的 class 名为 hide。(注意:成功消息元素同时有且只能有一个 class 名

完成后效果如下:

完成效果

题解 

// 定义拖放事件的处理函数
function drop(event) {
  // 检查是否拖动的拼图块不是当前目标拼图块
  // draggedPiece 被拖动的拼图块元素。this 目标位置的拼图块元素。
  if (draggedPiece !== this) {
    console.log(draggedPiece);
    console.log(this);
    // TODO:待补充代码
    // 交换拼图块图片和数据 ID
    const curImg = this.querySelector("img");
    const draggedImg = draggedPiece.querySelector("img");
    [curImg.src, draggedImg.src] = [draggedImg.src, curImg.src];
    [curImg.dataset.id, draggedImg.dataset.id] = [
      draggedImg.dataset.id,
      curImg.dataset.id,
    ];
    // 检查拼图是否完全正确
    const puzzles = document.querySelectorAll(".puzzle-piece img");
    const isValid = Array.from(puzzles).every(
      (img, index) => parseInt(img.dataset.id) === index + 1
    );
    successMessage.className = isValid ? "show" : "hide";
  }

相关推荐

  1. 备战9.

    2024-04-09 04:10:02       14 阅读
  2. 练习题

    2024-04-09 04:10:02       37 阅读
  3. 练习-简单1

    2024-04-09 04:10:02       35 阅读
  4. 练习-简单2

    2024-04-09 04:10:02       28 阅读
  5. 客观题练习笔记

    2024-04-09 04:10:02       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-09 04:10:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-09 04:10:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-09 04:10:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-09 04:10:02       20 阅读

热门阅读

  1. 精通并发【基础原理研究一】:Final

    2024-04-09 04:10:02       14 阅读
  2. Python世界之错误和异常

    2024-04-09 04:10:02       14 阅读
  3. js str字符串和arr数组互相转换

    2024-04-09 04:10:02       16 阅读
  4. HBase高并发机制

    2024-04-09 04:10:02       18 阅读