0

我尝试根据鼠标坐标更改欢迎消息。它必须在给定数字后更改。

哪里有问题,但我想不通!

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);
};

一个更好的解释的小提琴

有任何想法吗?

4

4 回答 4

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;
    }
};
于 2012-10-25T16:33:15.017 回答
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 之间的随机数,让自己头疼。

编辑:忘了小提琴

于 2012-10-25T16:33:50.413 回答
0

我可以看到逻辑上的问题...您仅在值超过 60 并且您再次重置为 0 时才更改内部 html,这意味着如果仅条件值为 61 则它进入...并查看您如何计算随机数val .... 因为它在值为 61 时进入 if 条件,因此当它进入 if 条件并更改内部文本时,您的随机值将始终为 1

于 2012-10-25T16:38:21.130 回答
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;
    }
};
于 2012-10-25T17:08:18.413 回答