2

javascriptクロージャに頭を悩ませることはできません。4つの乱数が必要ですが、最後の1つだけを4回複製します。

Javascript

$(function() {      

  function setNewNumber(element) {
    return function (newNumber) {
      element.text(newNumber);
    }
  }

  $('.number').each(function() {
      $.get('http://www.random.org/integers/?num=1&min=1&max=6&col=1&base=10&format=plain&rnd=new', 
        setNewNumber($(this))
      );
  });

});

HTML

<div class="number"></div>
<div class="number"></div>
<div class="number"></div>
<div class="number"></div>

実用的なプランカーの例

ヒントはありますか?

4

4 に答える 4

4

getリクエストはキャッシュされています。

http://jsfiddle.net/hCEbd/1/

(つまり、クロージャの理解が正しく、コードが正しく機能しているということです)。

コメントから、これは関連しているので:

APIごとに同じタイマーでrandom.orgに複数の番号をリクエストできます。4つのリクエストを使用する代わりに、を使用num=' + $(".number").lengthして少し解析を行います

于 2013-02-22T00:55:06.450 に答える
0

それはあなたがあなたのトップの機能で達成しようとしていることを少し混乱させます。新しい乱数を要素に設定するだけの場合は、どちらも必要ありません。

ajaxリクエストにいくつかのパラメータを指定するために使用します。特に、リクエストのキャッシュを停止する必要があります。要素を参照するためのコンテキストを提供することもできます.number

$('.number').each(function() {
  $.ajax({
      type: "GET",
      url: 'http://www.random.org/integers/?num=1&min=1&max=6&col=1&base=10&format=plain&rnd=new',
      context: this,
      success: function(data) { 
        $(this).text(data); 
      },
      cache: false
  });
});

このソリューションはここでいじります。

于 2013-02-22T00:47:17.583 に答える
-1

作品: http: //plnkr.co/edit/XTOI20kGbFbzdtDaqpLZ

リクエストはキャッシュされています。ちなみに、データを周期的に取得することはお勧めできません。

于 2013-02-22T01:03:40.780 に答える
-1

$.getなどのjqueryajaxリクエストは、スコープを変更します。setNewWord関数を再利用する場合は、グローバルスコープにするか、getの結果でスコープする必要があります。

jsfiddleを見てください。 http://jsfiddle.net/justengland/hJnXb/2/

function setNewWord(element) {
$('#output').append(element + '<br>');

}

$(関数(){

$(numbers).each(function () {
    var url = 'http://www.random.org/integers/?num=1&min=1&max=6&col=1&base=10&format=plain&rnd=new';
    $.get(url, setNewWord);
});

});

于 2013-02-22T01:52:27.783 に答える