原生JS生成九宫格

生成九宫格的主要流程可以分为以下三步:

  1. 根据九宫格的行列数计算出总格子数和每行格子数;
  2. 循环生成格子,并设置其属性和样式;
  3. 将所有生成的格子添加到页面中。

下面是一个实现九宫格的JavaScript代码示例:

// 获取容器元素
var container = document.getElementById('container');
// 定义九宫格的行列数
var num = 3;
// 计算每行格子数和总格子数
var size = container.clientWidth / num;
var total = num * num;

// 循环生成格子
for (var i = 0; i < total; i++) {
  // 创建格子元素
  var cell = document.createElement('div');
  // 设置样式和属性
  cell.style.width = size + 'px';
  cell.style.height = size + 'px';
  cell.style.float = 'left';
  cell.style.border = '1px solid #ccc';
  cell.style.boxSizing = 'border-box';
  cell.setAttribute('data-index', i);
  // 将格子添加到容器中
  container.appendChild(cell);
}

在上面的代码中,我们使用document.createElement方法来创建格子元素,并使用cell.setAttribute方法来设置其data-index属性。container.appendChild方法则将创建的格子添加到容器中。

下面是一个更为完整的九宫格实现代码示例,除了基本功能外,还实现了随机色块、点击变色和计分的功能。

// 获取容器元素
var container = document.getElementById('container');
// 定义九宫格的行列数
var num = 3;
// 计算每行格子数和总格子数
var size = container.clientWidth / num;
var total = num * num;
// 定义计分器和随机选中的格子
var score = 0;
var selected;

// 循环生成格子
for (var i = 0; i < total; i++) {
  // 创建格子元素
  var cell = document.createElement('div');
  // 设置样式和属性
  cell.style.width = size + 'px';
  cell.style.height = size + 'px';
  cell.style.float = 'left';
  cell.style.border = '1px solid #ccc';
  cell.style.boxSizing = 'border-box';
  cell.style.backgroundColor = getRandomColor();
  cell.setAttribute('data-index', i);
  // 绑定点击事件
  cell.onclick = function(event) {
    // 判断是否点击了已选中的格子
    if (this == selected) {
      // 随机选中下一个格子
      selected = container.children[Math.floor(Math.random() * total)];
      // 计分,并更新计分器和格子颜色
      score++;
      updateScore();
      updateColor();
    }
  };
  // 将格子添加到容器中
  container.appendChild(cell);
}

// 随机选中一个格子
selected = container.children[Math.floor(Math.random() * total)];

// 更新计分器内容
function updateScore() {
  var scoreElement = document.getElementById('score');
  scoreElement.innerHTML = 'Score: ' + score;
}

// 更新随机选中的格子的背景色
function updateColor() {
  // 随机生成颜色,除了已选中的格子
  var color = getRandomColor();
  while (color == selected.style.backgroundColor) {
    color = getRandomColor();
  }
  // 更新选中的格子和其它格子的背景色
  selected.style.backgroundColor = color;
  for (var i = 0; i < total; i++) {
    var cell = container.children[i];
    if (cell != selected) {
      cell.style.backgroundColor = getRandomColor();
    }
  }
}

// 获取随机颜色
function getRandomColor() {
  var colors = ['red', 'blue', 'green', 'yellow', 'orange', 'purple'];
  return colors[Math.floor(Math.random() * colors.length)];
}

// 初始化计分器
updateScore();

在上面的代码中,我们定义了一个selected变量,来表示随机选中的格子。在点击事件处理函数中,我们判断当前点击的格子是否是已选中的格子,如果是,则随机选中下一个格子,并更新计分器内容和格子颜色。updateColor()函数用于更新随机选中的格子和其它格子的背景色,避免它们和已选中的格子的颜色重复。getRandomColor()函数用于获取一个随机的颜色值,它从一个颜色数组colors中随机选择一个颜色。updateScore()函数用于更新计分器的内容。最后我们调用updateScore()函数来初始化计分器。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生JS生成九宫格 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 详解微信小程序用定时器实现倒计时效果

    下面是详解微信小程序用定时器实现倒计时效果的完整攻略。 步骤一:引入moment.js库 我们需要使用moment.js库来处理日期和时间。在小程序的App.js文件中引入moment.js库,代码如下: // 引入moment.js库 const moment = require(‘./libs/moment.min.js’); // 将moment.js…

    JavaScript 2023年6月11日
    00
  • springboot项目如何防止XSS攻击

    在SpringBoot项目中防止XSS攻击可以采取以下措施: 使用HTML转义库 在应用中使用HTML转义库比如jsoup、owasp-esapi、htmlentities等,可以过滤掉HTML标签并且转义掉敏感字符,这样可以有效避免XSS攻击。 例如,在Spring Boot项目中,我们可以使用前面提到的jsoup库来进行HTML转义: String sa…

    JavaScript 2023年6月11日
    00
  • php IIS日志分析搜索引擎爬虫记录程序第1/2页

    下面是PHP IIS日志分析搜索引擎爬虫记录程序第1/2页的完整攻略,包含以下几个步骤: 1. 配置IIS日志文件 在进行日志分析前,我们需要在IIS上配置日志文件,以记录用户访问网站的详细信息。可以按照以下步骤进行配置: 打开IIS管理器,在左侧面板中选择您要配置的站点,然后点击“logging”选项卡。 在日志文件目录下新建一个文件夹,用于存放日志文件。…

    JavaScript 2023年5月28日
    00
  • JavaScript全局函数使用简单说明

    下面是关于“JavaScript全局函数使用简单说明”的完整攻略。 什么是JavaScript全局函数 JavaScript全局函数指的是无需创建对象即可调用的函数。在JavaScript中,有一些函数不需要为其创建对象即可使用,这些函数就被称为 JavaScript全局函数。这些函数可以让我们更方便地使用许多常用操作。 JavaScript全局函数的简单说…

    JavaScript 2023年5月27日
    00
  • Javascript 错误处理的几种方法

    下面是关于 Javascript 错误处理的几种方法的详细攻略。 1. try-catch try-catch 是一种常用的 Javascript 错误处理方式,用于捕捉运行时的错误并进行相应的处理。其中,try 代码块用于执行可能会产生异常的代码,如果产生了异常则会被 catch 代码块捕获,从而进行错误处理。 下面是一个示例代码,演示了 try-catc…

    JavaScript 2023年5月28日
    00
  • JavaScript中函数声明与函数表达式的区别详解

    JavaScript中函数声明与函数表达式的区别详解 什么是函数声明和函数表达式? JavaScript中的函数有两种定义方式:函数声明和函数表达式。 函数声明是以function关键字开始的语句,后面跟着函数名称和一堆括号,括号内包含参数列表和函数体。例如: function sum (a, b) { return a + b; } 函数表达式是将函数定义…

    JavaScript 2023年5月27日
    00
  • asp.net下让Gridview鼠标滑过光棒变色效果

    下面是“asp.net下让Gridview鼠标滑过光棒变色效果”的完整攻略: 1. 添加样式表 首先,我们需要在页面中添加一个样式表,用来定义鼠标滑过时的样式: <style> .gridview-highlight:hover { background-color: #f2f2f2; } </style> 这是一个简单的样式表,将鼠…

    JavaScript 2023年6月11日
    00
  • Fuse.js模糊查询算法学习指南

    Fuse.js模糊查询算法学习指南 算法简介 Fuse.js是一款用于快速模糊搜索的JavaScript库。它使用了一种称为模糊查询算法的算法,能够在无需进行复杂的文件预处理或搜索索引的情况下,在大量数据中高效地进行模糊搜索。 Fuse.js算法的流程如下: 初始化:将查询的关键字转化为需要搜索的模式。 评估:根据搜索模式计算每个文本的匹配程度。 排序:将文…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部