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,如果你对此有任何疑问,请问我。