0

投稿が不明確であった場合は申し訳ありませんが、できる限り説明します。私は社会心理学の実験をオンラインで作成していますが、ランダムに異なる名前 (ジョン、マイク、アレックスなど) を選択できる機能が必要です。オンラインでヘルプを探しているときに、次のコードを見つけました。

function swapImages(){
  var $active = $('#myGallery .active');
  var $next = ($('#myGallery .active').next().length > 0) ? $('#myGallery.active').next() : $('#myGallery img:first');
  $active.fadeOut(function(){
  $active.removeClass('active');
  $next.fadeIn().addClass('active');
  });})

このコードと「mousetrap」ライブラリを使用して、キーが押されたときに名前を変更できました。しかし、名前をランダムに表示する方法については手がかりがありません (つまり、コード上の順序ではなく、実行するたびに異なります)。40 の異なる名前の後、別の html ページにリンクする必要があります。

助けてくれてありがとう、そして私の最後の投稿が混乱していたらごめんなさい....これはプログラミングへの私の最初のアプローチです:)

古い投稿: 私はプログラミングの世界にまったく慣れていないので、このコードでアイテムを配置した順序ではなく、ランダムにアイテムを選択できるようにするための助けが必要です。また、私はこれをウェブから入手しました.40個のアイテムで停止し、別のページにリンクする必要があります.

助けてくれてありがとう

4

1 に答える 1

0

単純にランダムな名前を選択する必要がある場合 - Math.Random を使用した配列からの選択が最も簡単な方法です:

var names = ["John", "Mike", "Peter", "Sid", "Homer"]
var idx;

do {
    idx = parseInt(names.length * Math.random());
    alert(names[idx]);
    names.splice(idx, 1);
} while (names.length > 0)

基本的に、配列の長さの境界内にランダムなインデックスを生成し、そのインデックスで要素を選択してから、配列から要素を削除します。表示する要素がなくなると、ループは終了します。

デモ: http://jsfiddle.net/4NNTA/1/

リストに 40 を超えるアイテムがあり、40 を超えると終了する必要がある場合は、カウンターと条件をwhile. location.hrefループを抜けた後、行きたいページのURLに設定することで別のページにリダイレクトできます。

UPDATEこれは、上記の修正されたコードを使用した関数です。任意の数の名前を指定できます。

    var Names = function () {

        var data;
        var counter;

        function initData() {
            data = ["John", "Mike", "Peter", "Sid", "Homer"]
        }

        this.init = function (c) {
            counter = c;
            initData()
        }

        this.getName = function () {

            if (counter === 0) {
                return ""
            } else {

                if (data.length === 0) initData();

                var idx = parseInt(data.length * Math.random());
                var sName = data[idx]
                data.splice(idx, 1);

                counter--;
                return sName

            }
        }
    }

内部でfunction initData名前の配列を指定できます。次に、表示する名前の数を渡して初期化します (この例では 40 に初期化します)。

var myNames = new Names();
myNames.init(40);

そして、あなたが電話するたびに

myNames.getName()

次のランダムな名前が表示されます。名前は、データがなくなるまで繰り返されません。その後、配列が再初期化され、繰り返されていないランダムな名前が再び開始されます。40 個すべての名前が取得されると、関数は空の文字列を返します。これを確認して、それに応じて対処できます。

于 2013-08-28T21:12:45.523 に答える