原生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日

相关文章

  • JavaScript加密解密7种方法总结分析

    JavaScript加密解密7种方法总结分析 JavaScript加密解密是前端工程师必须掌握的技能之一,本文总结了7种常见的JavaScript加密解密方法,并且提供了详细的代码示例。 1. Base64编码与解码 Base64是一种将二进制数据编码为文本的编码规则,其不仅可以用于前端加密解密,也可以用于图片、音频等二进制数据的传输。具体的编码和解码方法如…

    JavaScript 2023年5月19日
    00
  • JS弹出窗口的运用与技巧大全

    JS弹出窗口的运用与技巧大全 作为开发者,JS弹出窗口是我们常常需要使用的一个常规界面,本文将全面介绍JS弹出窗口的运用,并提供一些技巧,让你可以轻松掌握这个常用的技能。 简介 JS弹出窗口可以在页面中弹出一个新的窗口,常用于显示提示信息、警告信息,以及展示图片等。JS弹出窗口主要分为以下几种: alert:用于弹出简单的警告信息。 confirm:用于提示…

    JavaScript 2023年6月11日
    00
  • JavaScript ES2019中的8个新特性详解

    下面是对 “JavaScript ES2019中的8个新特性详解” 的完整攻略。 简介 ES2019是JavaScript的最新版本,主要为了增强语言的功能和特性。本文将对ES2019中的8个新特性进行详细的讲解。 新特性 1. Array.Flat() Array.Flat() 方法将多维数组简化为一维数组。这个方法不会改变原来的数组,而是返回一个新的一维…

    JavaScript 2023年5月27日
    00
  • javascript 终止函数执行操作

    如果在 JavaScript 函数中需要提前结束函数的执行,有几种方法可以实现终止函数执行操作。下面是几种常用的方式: 1. 使用return语句 在 JavaScript 函数中,可以使用return语句来提前结束函数的执行。当函数执行到return语句时,函数将立即停止执行并返回指定的值。如果return语句没有指定一个值,函数将返回undefined。…

    JavaScript 2023年5月27日
    00
  • Javascript Dom元素获取和添加详解

    关于JavaScript中Dom元素获取和添加,可以分为如下几个方面进行讲解: 一、Dom元素获取 Dom元素是页面上的元素,我们可以通过JavaScript代码获取到Dom元素以便进行操作,下面介绍一些常用的Dom元素获取方式: 1. document.getElementById 这是获取单个元素最常用的方法,通过元素id获取单个Dom元素: var e…

    JavaScript 2023年6月10日
    00
  • JS数学函数Exp使用说明

    JS数学函数Exp使用说明 简介 Exp()函数是JavaScript中的一个数学函数,也称为指数函数或自然对数函数。它的主要作用是计算以自然常数e为底数的指数函数。 在数学上,自然常数e是一个重要的常数,它的值是约等于2.71828的无限不循环小数。指数函数y=e^x是一个与其它常见数学函数如幂函数、指数函数和对数函数等同样重要的函数。 语法 Math.e…

    JavaScript 2023年5月28日
    00
  • HTML5 history新特性pushState、replaceState及两者的区别

    HTML5中引入的history API,包括pushState、replaceState方法的新特性,允许JavaScript程序修改浏览器的历史记录。在介绍这两个新特性的区别之前,我们先来了解一下它们的定义以及常见的使用场景。 pushState方法 pushState方法可以往浏览器历史记录里面插入一条新的记录,并在页面URL上添加指定的参数,而不需要…

    JavaScript 2023年6月11日
    00
  • 详解Js 根据文件夹目录获取Json数据输出demo

    下面是详解 “JS 根据文件夹目录获取 Json 数据输出 demo” 的完整攻略。 1. 概述 本攻略主要讲解如何使用 JS 根据文件夹目录获取 json 数据,最终输出到页面中。具体实现方式是对文件夹目录进行遍历,生成对应的 json 数据,然后输出到页面中。 2. 准备工作 在开始之前,需要准备一些开发环境和依赖: Node.js,用于在后台生成 js…

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