2016-07-03 20 views
0

これは潜在的によくある質問ですが、ロジックとコードは正しいと思われますが、ブラウザがクラッシュするまでループするようです。それらの10があるまでJavaScript Do/Whileループ無限ループの場合

$("#orderview").click(function(){ 
    do { 
     $(".row1").clone().appendTo(".cardbox"); 
     var i = $("listrow").length; 
     } 
    while (i < 10); 
}); 

My機能はListrowクラスDIV年代を作成しています。私のHTMLは1DIVで始まります。

<div class="listrow news" id="row-a"> 
    <div class="l-padding floatleft"> 
     <div id="redditThumbnail"></div> 
     <div class="articleheader news"> 
      <p class="mediatitle alignleft" id="redditTitle"> 
      </p> 
      <p class="mediumtext floatleft alignleft"> 
       Submitted by 
      </p> 
      <div id="redditUsername"></div> 
      <div class="half floatright"> 
       <p class="mediatext floatright s-color bold h-s-margin"> 
        TEST 
       </p> 
       <p class="mediatext floatright p-color bold"> 
        ACTION 
       </p> 
      </div> 
     </div> 
    </div> 
</div> 

私が試みJSの背後にあるロジックた:

  1. クローン最初のDIV "Listrow" クラスのDIVが存在しているどのように多くの
  2. チェック
  3. < 10 Listrow DIVの後、再起動がある場合ループとクローン 別の

私に何か不足していますか?助けを前にありがとう。

+2

私はクラス 'row1'でのdivが表示されていないと、あなたは' listrow'長に対して '.'を忘れてしまいました。私はまた、それがあなたが思うように動作するとは思わない。なぜforループを使ってやるのはなぜですか? – ElefantPhace

+0

あなたのコードで使用しているものがあなたのHTMLコードにない場合、この行のために無限ループが発生しています。var i = $( "listrow")。length ;.あなたは存在しない要素(listrow)を選択しています。0 – WinterCore

+0

こんにちは、私は間違ったDIVをコピーして謝っています。私は正しい "row1"クラスが終了した別のdivを持っています。それは良い点です。だから、あなたはループを10回使うことを提案していますか?私は正直言ってそのことを考えていませんでした。 – dwashburn

答えて

3

変更:

var i = $("listrow").length; 

へ:

var i = $(".listrow").length; 
+0

$( '#orderview。listrow')は、Dom全体を検索するよりもはるかに効率的でなければなりません –