0

jsfiddle - http://jsfiddle.net/zE4Y7/

デモ - http://www.ttmt.org.uk/closure/

2 つの配列があり、1 つはフレーズを含み、もう 1 つはフォントを含みます。ループを使用して、<p>タグを含む 3 つの div を作成しています。

それぞれ<p>に、最初の配列からランダムなフレーズを配置しています。次に、それぞれ<p>が 2 番目の配列のフォントでスタイル設定されます。First<p>は、配列内の最初のフォント、2 番目の 2<p>番目のフォントなどでスタイルを設定する必要があります。

私の問題は、すべてのフレーズが配列の最後のフォントでスタイル設定されていることです。なぜそれが起こっているのかを知っていると思います。それを止めるには閉鎖が必要です。このように閉鎖しようとしていますが、うまくいきません。

誰でも閉鎖を手伝ってもらえますか。

    <script>

      createFlags = function(){

        var text = ['Hello Sailor','Acid Test','Bear Garden','Botch A Job','Dark Horse','Face','IKEA','Jig'];

        var fonts = ['CALIBRI','CORBEL','SourceSans'];

        for(var i = 0; i<fonts.length; i++){
          var ranNum = Math.floor(Math.random()*text.length); 
          (function(n){
            $('#wrap').append('<div class="font"><p>'+text[ranNum]+'</p></div>').css({'font-family':fonts[n], 'font-size':'3em'});
          })(i);
        }

      }

      createFlags();

    </script>
4

1 に答える 1

1

問題は.append、新しい要素ではなく、追加した要素を返すため、毎回親 div のスタイルを設定することです。これを行う:

$('<div class="font"><p>'+text[ranNum]+'</p></div>').appendTo('#wrap')

それ以外の

$('#wrap').append('<div class="font"><p>'+text[ranNum]+'</p></div>')

フィドル

于 2013-06-10T20:45:07.657 に答える