Javascript 使用js选择随机表格单元格

Javascript 使用js选择随机表格单元格,javascript,html,Javascript,Html,首先我有一个表单,有两个文件board字段和myNumb,board是控制表大小的数字myNumb是应随机选择的单元格数 我正在尝试使用javascript选择随机表单元格。我有一个整数变量myNumb,其中我将给出应该选择多少个随机单元格。在所选单元格中,我希望将1和其余单元格中的0放在一起。我已经构建了表的结构,但不知道如何选择随机单元格。任何想法都将不胜感激 function tableMatrix () { //taking values from the form va

首先我有一个表单,有两个文件
board
字段和
myNumb
,board是控制表大小的数字
myNumb
是应随机选择的单元格数

我正在尝试使用javascript选择随机表单元格。我有一个整数变量
myNumb
,其中我将给出应该选择多少个随机单元格。在所选单元格中,我希望将1和其余单元格中的0放在一起。我已经构建了表的结构,但不知道如何选择随机单元格。任何想法都将不胜感激

function tableMatrix () {
    //taking values from the form
    var board = document.forms["myForm"]["board"].value;;
    var myNumb = document.forms["myForm"]["myNumb"].value;
    var zero = 0;
    var one = 1;

    //finding myContainer
    var myContainer = document.getElementById('myContainer');
    myContainer.innerHTML = '';
    //creating element <table>
    var table = document.createElement('table');

    table.style.width = '100%';
    table.setAttribute('border', '1');

    //creating element <tbody>
    var tbody = document.createElement('tbody');

    //cells creation
    for (var i = 0; i < board; i++) {
        //creating <tr> element
        var tr = document.createElement('tr');
        for (var j = 0; j < board; j++) {
            //creating <td> element
            var td = document.createElement('td');
            //put <td> after <tr> element
            tr.appendChild(td);
            td.setAttribute('class', 'tblCells');

            var x = 0;
            if (x <= myNumb) {
                var randomCounter = Math.floor(Math.random() * 9);
                x += randomCounter;
                td.innerHTML = '<span>'+ one +'</span>';
            } else {
                td.innerHTML = '<span>'+ zero +'</span>';
            }
        }
        //put <tr> after <tbody> element
        tbody.appendChild(tr);
    }
    //put <tbody> after <table> element
    table.appendChild(tbody);
    //put <table> after <div> element
    myContainer.appendChild(table);

}
函数表矩阵(){
//从表单中获取值
var board=document.forms[“myForm”][“board”].value;;
var myNumb=document.forms[“myForm”][“myNumb”].value;
var 0=0;
Var1=1;
//寻找myContainer
var myContainer=document.getElementById('myContainer');
myContainer.innerHTML='';
//创建元素
var table=document.createElement('table');
table.style.width='100%';
表.setAttribute('border','1');
//创建元素
var tbody=document.createElement('tbody');
//细胞生成
对于(变量i=0;i如果(x这里是生成所需模式的脚本:

 function shuffle(array) {
  var currentIndex = array.length, temporaryValue, randomIndex ;

  // While there remain elements to shuffle...
  while (0 !== currentIndex) {

    // Pick a remaining element...
    randomIndex = Math.floor(Math.random() * currentIndex);
    currentIndex -= 1;

    // And swap it with the current element.
    temporaryValue = array[currentIndex];
    array[currentIndex] = array[randomIndex];
    array[randomIndex] = temporaryValue;
  }

  return array;
}
  function fillCells(value, len) {
    var arr = [];
    for (var i = 0; i < len; i++) { if(i<value){
      arr.push(1);}else{arr.push(0);}
    }
    shuffle(arr);
    return arr;
  }

    function tableMatrix () {
  //taking values from the form
    var board = document.forms["myForm"]["board"].value;;
    var myNumb = document.forms["myForm"]["myNumb"].value;
    var zero = 0;
    var one = 1;
    var totalCell = board*board;
   var cellValues =  fillCells(myNumb, totalCell)
//finding myContainer
var myContainer = document.getElementById('myContainer');
    myContainer.innerHTML = '';
//creating element <table>
  var table = document.createElement('table');

  table.style.width = '100%';
  table.setAttribute('border', '1');

  //creating element <tbody>
  var tbody = document.createElement('tbody');

  //generate random number

  var x = 0;
  //cells creation
  for (var i = 0; i < board; i++) {
    //creating <tr> element
      var tr = document.createElement('tr');
      for (var j = 0; j < board; j++) {
        //creating <td> element
            var td = document.createElement('td');
            //put <td> after <tr> element
            tr.appendChild(td);
            td.setAttribute('class', 'tblCells');

            td.innerHTML = '<span>'+cellValues[x]+'</span>';
            x++;

      }
      //put <tr> after <tbody> element
      tbody.appendChild(tr);
  }
  //put <tbody> after <table> element
  table.appendChild(tbody);
  //put <table> after <div> element
  myContainer.appendChild(table);
 } 
函数洗牌(数组){
var currentIndex=array.length,temporaryValue,randomIndex;
//虽然还有一些元素需要洗牌。。。
而(0!==currentIndex){
//选择剩余的元素。。。
randomIndex=Math.floor(Math.random()*currentIndex);
currentIndex-=1;
//并将其与当前元素交换。
临时值=数组[currentIndex];
数组[currentIndex]=数组[randomIndex];
数组[randomIndex]=临时值;
}
返回数组;
}
函数fillCells(值,len){
var-arr=[];

对于(var i=0;i
cell.id = 'cell_' + (rowNum * boardSize + columnNum);
使用此选项,您可以选择
myNum
单元格并选择它们:

 numberOfCells = boardSize * boardSize;
 // pick a random cell.
 cellId = 'cell_' + Math.floor(Math.random() * numberOfCells);
 document.getElementById(cellId);
我根据你的小提琴在这里实现了这一点:


函数createTable(大小){
var表,tr,td;
table=document.createElement('table');
用于(变量行=0;行<大小;++行){
tr=document.createElement('tr');
用于(变量列=0;列<大小;++列){
td=document.createElement('td');
td.id='cell_'+(行*大小+列);
td.innerHTML='0';
tr.appendChild(td);
}
表1.儿童(tr);
}
返回表;
}
函数selectRandomCells(大小、计数){
变种x,核细胞,细胞体,细胞;
numCells=大小*大小;
x=0;
而(x
表格{
宽度:100%;
}
表,td{
边框:1px纯黑;
}
运输署署长获选{
背景:#ccc;
}

行和列数



选定单元格的数目


给你

function selectRandomCells(board, myNumb, table) {
var totalCells = board * board;
var selectedCell, cellIndex = null;
for(var i=1; i<=myNumb; i++) {
  cellIndex = Math.floor((Math.random() * totalCells) + 1);
  selectedCell = table.rows[Math.floor(cellIndex/board)].cells[cellIndex%board];
  selectedCell.innerHTML = "<span>0</span>";
  if(i == 1) {
    selectedCell.innerHTML = "<span>1</span>";
  }
}
}
函数选择随机单元格(板、myNumb、表格){
var totalCells=电路板*电路板;
var selectedCell,cellIndex=null;
对于(var i=1;i


p、 s:我没有包括重复随机数的逻辑。因此,您可以简单地将随机数存储在数组中,并在每次生成新数时进行检查。

因此,您的整个表将具有
myNumb
的1,其余为0,对吗?@zan是的,这是正确的right@vadim,如果你对此有任何疑问,请问我。