鼠标移动给定数字后的火灾事件

时间:2012-10-25 16:29:43

标签: javascript events count pixel mousemove

我尝试根据鼠标坐标更改欢迎信息。给出一个数字后它必须改变。

有一个问题,但我无法弄清楚!

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以获得更好的解释。

有什么想法吗?

4 个答案:

答案 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;
    }
};