我尝试根据鼠标坐标更改欢迎信息。给出一个数字后它必须改变。
有一个问题,但我无法弄清楚!
var str = ["Hello", "Bonjour", "Salut"],
len = str.length,
i = 0;
document.onmousemove = function(event) {
var count = i++,
random = (count) % len;
if (count > 60) {
document.body.innerHTML = str[random];
i = 0;
}
console.log(count);
};
fiddle以获得更好的解释。
有什么想法吗?
答案 0 :(得分:1)
您的逻辑只会生成以下计算:
61 % len
或者至少它只会在i > 60
时输出,因此您的输出将始终基于该计算 - 而不是您所期望的。
var str = ["Hello", "Bonjour", "Salut"],
last = '',
len = str.length,
i = 0;
document.onmousemove = function(event, r) {
if (i++ > 60) {
r = Math.floor(Math.random() * len;
if ( last ) { str.push(last); }
last = str.splice(r,1);
i = 0;
document.body.innerHTML = last;
}
};
不重复使用之前值的版本:
var str = ["Hello", "Bonjour", "Salut"],
last = '',
i = 0;
document.onmousemove = function(event, r) {
if (i++ > 60) {
r = Math.floor(Math.random() * str.length);
if ( last ) { str.push(last); }
last = str.splice(r,1);
document.body.innerHTML = last;
i = 0;
}
};
答案 1 :(得分:0)
var str = ["Hello", "Bonjour", "Salut"],
len = str.length,
i = 0;
document.onmousemove = function(event) {
var count = i++,
random;
do {
random = Math.floor((Math.random() * 3));
} while (random == str.indexOf(document.body.innerHTML));
if (count > 60) {
document.body.innerHTML = str[random];
i = 0;
}
console.log(count);
};
你正在使用字符串长度进行一些奇怪的可分性计算,只需生成0到2之间的随机数,这样可以让你自己头痛。
编辑:忘记了fiddle
答案 2 :(得分:0)
我可以在逻辑上看到问题......只有当值超过60并且你再次重置为0时才会改变内部html,这意味着如果条件值为61则进入...并看看你好吗?计算你的随机值....因为当值为61时它会转到if条件,因此当它进入if条件并且当它改变内部文本时你的随机值将始终为1
答案 3 :(得分:0)
//Use this code...
var str = ["Hello", "Bonjour", "Salut"], len = str.length, i = 0;
document.onmousemove = function (event) {
var count = i++;
if (count > 60) {
var random = (event.screenX + event.screenY) % len;
document.body.innerHTML = str[random];
i = 0;
}
};