javascript中处理数组来生成卡片
2014-07-23 12:49
357 查看
前面的html css代码类似,以下是修改js代码
脚本3-6 这个脚本限制了每一列中值的范围
window.onload = initAll;
function initAll() {
if (document.getElementById) {
for (var i=0; i<24; i++) {
setSquare(i);
}
}
else {
alert("Sorry, your browser doesn't support this script");
}
}
function setSquare(thisSquare) {
var currSquare = "square" + thisSquare;
var colPlace = new Array(0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4);
var colBasis = colPlace [thisSquare] * 15;
var newNum = colBasis + Math.floor (Math.random() * 15) + 1;
document.getElementById(currSquare) innerHTML = newNum;
}
解 释
1. var colPlace = new Array(0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4);
我们希望限制哪些随机数可以放在哪一列中。最简单的方法是给每一列分配一个编号(B:0,I:
1,N:2,G:3,O:4),然后用以下表达式计算可以放进每一列中的数字:(列号×15)+(1~15
的随机数)。
要用colPlace数组记录每个格子所属的列。它包含0~4的数字并重复五次(要减去空的格子。
请注意,数字2仅用了4次)。
2. var colBasis = colPlace[thisSquare] * 15;
var newNum = colBasis + Math.floor(Math.random() * 15) + 1;
我们首先计算列号:存储在colPlace[thisSquare]中的数字乘以15。newNum变量仍然生成随机数,
但不是1~75的数字,而是计算一个1~15的随机数,然后加上列号。因此,如果随机数是7,那么
它在B列中是7,在I列中是22,在N列中是37,在G列中是52,在O列中是67。
效果图跟上篇文章一样,只是用到了数组
下面是使用do/while更新数组
脚本3-9 这个脚本防止给定的列中出现重复的数字
window.onload = initAll;
var usedNums = new Array(76);
function initAll() {
if (document.getElementById) {
for (var i=0; i<24; i++) {
setSquare(i);
}
}
else {
alert("Sorry, your browser doesn't support this script");
}
}
function setSquare(thisSquare) {
var currSquare = "square" + thisSquare;
var colPlace = new Array(0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4);
var colBasis = colPlace [thisSquare] * 15;
var newNum;
do {
newNum = colBasis + getNewNum() + 1;
}
while (usedNums[newNum]);
usedNums[newNum] = true;
document.getElementById(currSquare). innerHTML = newNum;
}
function getNewNum() {
return Math.floor(Math.random() * 15);
}
解释一下
1. var newNum;
在前面的示例中,我们在创建newNum变量时对它进行初始化。因为我们将多次设置它,所以在进
入循环之前创建它,这样只需创建一次。
2. do {
这一行开始do代码块。关于这种循环必须记住的一点是,do块中的代码至少会执行一次。
3. newNum = colBasis + getNewNum() + 1;
与前面的示例一样,循环中的这行代码将newNum变量设置为我们需要的数字。
4. }
右花括号标出do块的结尾。
5. while (usedNums[newNum]);
while检查会使do代码块反复执行,直到检查结果为false为止。在这个示例中,我们检查usedNums[]
数组中newNum位置上的值,从而检查newNum是否已经使用过了。如果这个数字已经用过了,控制就
被传递回do块的开头,整个过程再次重复。最终,我们会找到一个没有使用过的数字。在此之后,
就会离开循环,将usedNums设置为true,并将newNum写到卡片上。
脚本3-6 这个脚本限制了每一列中值的范围
window.onload = initAll;
function initAll() {
if (document.getElementById) {
for (var i=0; i<24; i++) {
setSquare(i);
}
}
else {
alert("Sorry, your browser doesn't support this script");
}
}
function setSquare(thisSquare) {
var currSquare = "square" + thisSquare;
var colPlace = new Array(0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4);
var colBasis = colPlace [thisSquare] * 15;
var newNum = colBasis + Math.floor (Math.random() * 15) + 1;
document.getElementById(currSquare) innerHTML = newNum;
}
解 释
1. var colPlace = new Array(0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4);
我们希望限制哪些随机数可以放在哪一列中。最简单的方法是给每一列分配一个编号(B:0,I:
1,N:2,G:3,O:4),然后用以下表达式计算可以放进每一列中的数字:(列号×15)+(1~15
的随机数)。
要用colPlace数组记录每个格子所属的列。它包含0~4的数字并重复五次(要减去空的格子。
请注意,数字2仅用了4次)。
2. var colBasis = colPlace[thisSquare] * 15;
var newNum = colBasis + Math.floor(Math.random() * 15) + 1;
我们首先计算列号:存储在colPlace[thisSquare]中的数字乘以15。newNum变量仍然生成随机数,
但不是1~75的数字,而是计算一个1~15的随机数,然后加上列号。因此,如果随机数是7,那么
它在B列中是7,在I列中是22,在N列中是37,在G列中是52,在O列中是67。
效果图跟上篇文章一样,只是用到了数组
下面是使用do/while更新数组
脚本3-9 这个脚本防止给定的列中出现重复的数字
window.onload = initAll;
var usedNums = new Array(76);
function initAll() {
if (document.getElementById) {
for (var i=0; i<24; i++) {
setSquare(i);
}
}
else {
alert("Sorry, your browser doesn't support this script");
}
}
function setSquare(thisSquare) {
var currSquare = "square" + thisSquare;
var colPlace = new Array(0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4);
var colBasis = colPlace [thisSquare] * 15;
var newNum;
do {
newNum = colBasis + getNewNum() + 1;
}
while (usedNums[newNum]);
usedNums[newNum] = true;
document.getElementById(currSquare). innerHTML = newNum;
}
function getNewNum() {
return Math.floor(Math.random() * 15);
}
解释一下
1. var newNum;
在前面的示例中,我们在创建newNum变量时对它进行初始化。因为我们将多次设置它,所以在进
入循环之前创建它,这样只需创建一次。
2. do {
这一行开始do代码块。关于这种循环必须记住的一点是,do块中的代码至少会执行一次。
3. newNum = colBasis + getNewNum() + 1;
与前面的示例一样,循环中的这行代码将newNum变量设置为我们需要的数字。
4. }
右花括号标出do块的结尾。
5. while (usedNums[newNum]);
while检查会使do代码块反复执行,直到检查结果为false为止。在这个示例中,我们检查usedNums[]
数组中newNum位置上的值,从而检查newNum是否已经使用过了。如果这个数字已经用过了,控制就
被传递回do块的开头,整个过程再次重复。最终,我们会找到一个没有使用过的数字。在此之后,
就会离开循环,将usedNums设置为true,并将newNum写到卡片上。
相关文章推荐
- Javascript+ASP处理表单的生成与验证
- 用Javascript数组处理多个字符串的连接问题
- 生成highcharts报表时对数据没有用= eval('([' + seriesArray+ '])')处理生成数组,而是简单的拼成字符串,结果导致大量的场景出现
- JavaScript对象数组的排序处理方法
- 详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
- ASP中JavaScript处理复杂表单的生成与验证第1/3页
- javascript 数组的一些处理处理方法
- 在Javascript中处理数组之toSource()方法的使用
- 在JavaScript中处理数组之reverse()方法的使用
- PHP与JavaScript在处理数组方面的不同之处
- java ;javascript;oracle 数组处理
- ie9 ff11, javascript 数组处理的一个bug
- ie9 ff11, javascript 数组处理的一个bug
- 随机生成一个 10 个元素的数组,找到 x 的倍数,并将其值修改成 0.(注意:修改数值使用回掉函数处理)
- JS 处理JSON数据及javascript处理对象、JSON对象、hash对象、数组对象的方法
- 在javascript将NodeList作为Array数组处理的方法
- 小技巧:用Javascript数组处理多个字符串的连接问题
- javascript和php中的数组处理函数对比
- JavaScript中简单的数组使用及明细处理
- PHP与JavaScript在处理数组方面的不同之处