数字不断变化
Number Keep Changing
我想通过从 49 个数字中选择 6 个数字来更改数字,所以首先我声明了一个div 并在其中有六个跨度来包含一个数字。
我想通过getElementByTagName来更改它,以分配一个与setInterval相结合的新数字,使其始终更改,但它不起作用。
我错的地方在哪里?
感谢。
function computeRandom(){
var value = new Array(49);//declare array
for ( i = 0; i < 49; i++ )//initial array_value
value[i] = i+1;
for ( i = 0 ;i < 100; i++ ) {//random arrange
x = parseInt(Math.random()*49);
y = parseInt(Math.random()*49);
tmp = value[x];
value[x] = value[y];
value[y] = tmp;
}
var color = new Array(49);
for ( i = 0; i < 49; i++ )//store color
color[i] = "rgb(" + parseInt(Math.random()*255) + "," + parseInt(Math.random()*255) + "," + parseInt(Math.random()*255) + ")";
var value_tmp = new Array(6);
for( i = 0; i < 6; i++)
value_tmp[i] = value[i];
document.write("<div style = '"text-align:center;'" >");//center the text by div
for( i = 0; i < 6; i++)
document.write("<span style = '"font-size: 2.5em; display:inline-block; text-align:center; width: 1.5em; background: white; color: " + color[i] + " '" > "
+ value_tmp[i] + "</span>     ");
var spanArray = document.getElementsByTagName("span");
setInterval("keepMove(value,spanArray)",10);
}
function keepMove(val,sp){
var index = parseInt(Math.random()*43);//set a increment to avoid repeatition
for( i = 0; i < sp.length; i++){
sp[i].innerHTML = val[i+index];
document.write(sp[i].innerHTML+" ");
}
}
.CSS:
#bg {
background: grey;
opacity: 0.8;
}
#hl {
text-align: center;
color: white;
}
.HTML:对不起,我不知道如何发布 HTML?http://codepad.org/IrSOsjg7
我已经尝试了评论员的建议,但仍然不起作用,但感谢您的帮助!我非常感谢!
我认为问题setInterval("keepMove(value,spanArray)",10)
当你传递一个字符串作为setInterval
的第一个参数时,就像eval
那个字符串一样,代码将在全局环境中运行,因为在全局环境中没有变量value
和spanArray
,代码将无法正常运行。
例如:
function foo(x, y) {
alert(x + " " + y);
}
function bar() {
var x = 100, y = 200;
setInterval("foo(x, y)", 1000);
}
bar();
这将得到错误x is not defined
您可以尝试:
setInterval(function(){
keepMove(value, spanArray);
}, 10);
尝试更改使用 setInterval 的方式。您应该使用闭包来访问值和 spanArray vars。
setInterval(function(value, spanArray) {
return function() {
keepMove(value,spanArray)
}
}(value, spanArray),10);
}
这是因为 setTimeout 将在全局上下文中执行,从那里你无法访问这些私有变量。
相关文章:
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 测试索引值是否等于某个数字的倍数
- 单击页面上的链接后高度发生变化
- 将数字转换为一定数量的硬币
- 键入最后一位数字后自动提交
- 如何在javascript中迭代数字列表
- Javascript逻辑运算符和字符串/数字
- 如何在javascript中获得与特定数字相等的随机数
- 如果元素's的ID以数字开头
- 递增一个数字而不去掉前导零
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 如何在这里将两个值最低的数字相加
- 如何删除除冒号、数字和'上午'或者'下午'
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 在我的网站上创建一个在1-10之间不断变化的数字时遇到了问题.Javascript
- 数字不断变化
- 如何在Javascript中创建一个变量,并在变量中添加一个不断变化的数字'的名字
- ng变化不会't在数字输入类型上触发
- Inputmask最后一位数字的动态掩码变化
- 如何在html页面中显示变化的变量(如数字)