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を超えた場合にのみ内部htmlを変更し、再び0にリセットしています。つまり、条件のみの値が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 に答える