2009-07-29 12 views
13

PHPのようにJQueryにforeachコードがありますか? 私はjqueryでforeach相当のphp?

<?php foreach ($viewfields as $viewfield): ?>  
if("<?php echo $viewfield['Attribute']['required'];?>"=='true'){ 
     $("<span class='req'><em> * </em></span>").appendTo("#fb_contentarea_col1down21 #label<?php echo $viewfield['Attribute']['sequence_no']?>"); 
    } 


    if(<?=$viewfield['Attribute']['type'];?>=='text'||<?=$viewfield['Attribute']['type'];?>=='date'||<?=$viewfield['Attribute']['type'];?>=='number'){ 
     $("<input id=input<?=$viewfield['Attribute']['sequence_no'];?> type= 'text' style= 'width:<?=$viewfield['Attribute']['size'];?>px' data-attr=<?=$viewfield['Attribute']['type'];?> ></input><br>").appendTo("#fb_contentarea_col1down21 #<?=$viewfield['Attribute']['sequence_no'];?>"); 
    } 


    else if(<?=$viewfield['Attribute']['type'];?>=='textarea'){ 
     $("<textarea style= 'width:<?=$viewfield['Attribute']['size'];?>px' data-attr=<?=$viewfield['Attribute']['type'];?> id=input<?=$viewfield['Attribute']['sequence_no'];?>></textarea><br>").appendTo("#fb_contentarea_col1down21 #<?=$viewfield['Attribute']['sequence_no'];?>"); 
} 

のようにjqueryの内のforeachの任意の等価があり、PHPのコードを持っていますか? jQueryでこれと同じ機能をどのように達成できますか?

EDIT 1:

私はそれが働いたと思ったが、私はエラーを取得します。コードとエラーメッセージを以下に示します。

for(<?=$viewfield;?> in <?=$viewfields;?>){ 

if("<?=$viewfield['Attribute']['required'];?>"=='true'){ 
      $("<span class='req'><em> * </em></span>").appendTo("#fb_contentarea_col1down21 #label<?php echo $viewfield['Attribute']['sequence_no']?>"); 
} 

if(<?=$viewfield['Attribute']['type'];?>=='text'||<?=$viewfield['Attribute']['type'];?>=='date'||<?=$viewfield['Attribute']['type'];?>=='number'){ 
      $("<input id=input<?=$viewfield['Attribute']['sequence_no'];?> type= 'text' style= 'width:<?=$viewfield['Attribute']['size'];?>px' data-attr=<?=$viewfield['Attribute']['type'];?> ></input><br>").appendTo("#fb_contentarea_col1down21 #<?=$viewfield['Attribute']['sequence_no'];?>"); 
} 

else if(<?=$viewfield['Attribute']['type'];?>=='textarea'){ 
      $("<textarea style= 'width:<?=$viewfield['Attribute']['size'];?>px' data-attr=<?=$viewfield['Attribute']['type'];?> id=input<?=$viewfield['Attribute']['sequence_no'];?>></textarea><br>").appendTo("#fb_contentarea_col1down21 #<?=$viewfield['Attribute']['sequence_no'];?>"); 
} 

}

エラーメッセージ:

(配列で)誰かが私を助けることができるため

構文エラー ..

+1

JavaScriptとPHPは対話できません... PHPはクライアントに送信する前にJavaScriptコードを作成します。それがクライアントに送信されると、それが実行されます。ソースを見ると、PHPが出力するものは 'for(in array){'( '$ viewfield'は空変数なので' $ viewfields'はPHP配列です。文字列は 'Array'と表示されます)。JavaScriptやPHPですべてを行う必要があります.2つの言語を混在させることはできません。 – Blixt

+0

しかし、jquery内でphpを使用するため、document.ready()closeタグにエラーメッセージが表示されます。私は各PHPコードのためにそれを削除すると、エラーがなくなり、document.locationは正常に動作します。 それでは、JQueryの各コードでそれを書く方法は? – Angeline

答えて

43

$.each機能が類似しています。

は、それはあなたが各項目へのアクセス権を持って、コールバック関数を用いて配列を繰り返し処理することができます:

var arr = [ "one", "two", "three", "four", "five" ]; 


$.each(arr, function(index, value) { 
    // work with value 
}); 

たぶん、あなたはループを切断したい場合、あなたはreturn false;かでそれを行うことができ、知っておくと便利です繰り返しを1回だけスキップする(続行する)場合は、return true;

25

オブジェクトを反復処理したい場合は、私はJavaScriptのバリアントをお勧めします:
注:

for (var key in obj) { 
    alert(key + ': ' + obj[key]); 
} 

あなたまた、このようにjQueryでオブジェクトを反復処理することができます!これを行うには、この構文を維持するのがはるかに簡単だと思わない限り、かなり無意味です。以下のシンタックスでは、上記の標準JavaScriptのfor-loopよりもはるかにオーバーヘッドがあります。

$.each(obj, function (key, value) { 
    alert(key + ': ' + value); 
}); 

配列を反復するために、これはあなたが標準のJavaScript(arrと仮定すると、配列である)でそれを行う方法です。

for (var i = 0, l = arr.length; i < l; i++) { 
    alert(i + ': ' + arr[i]); 
} 

にjQueryでそれを行うには、このようにそれを行うことができます:

$.each(arr, function (index, value) { 
    alert(index + ': ' + value); 
}); 
+0

各関数を使って配列の要素を繰り返し処理できますか? – Angeline

+0

ええ、私は今それを行う方法を追加しました。 – Blixt

3

セレクタ上で動作のjQuery:

$('a').each(function() { 
    $(this).click(function(e) { 
     e.preventDefault() 
     var href = this.href; 
     open(href); 
    }); 
    // operate on the anchor node. 
}); 

jQuery direct。各:

var a = ['one', 'two']; 

$.each(a, function() { 
    alert(this) 
}); 

JS:バニラforループ

for (var i = 0, len = 10; i<l; ++i) { 
    alert(i) 
} 

JS#2:バニラ

var humanLimbs = ['arms', 'legs']; 
for (var limb in humanLimbs) { 
    if (humanLimbs.hasOwnProperty(limb)) { 
     alert(limb) 
    } 
} 

Jsの#3のために:無限ループ

for (;;) { alert(1) } // dont try this :p 
4

Javascriptがサポートしていますfor(data in data_array)構文。 jQueryには$ .each関数もあります(既述のとおり)

+2

for-inは、配列の要素ではなくオブジェクトのプロパティを反復処理します。 – NickFitz

0

このリンクをチェックアウトすることができます。 Javaascript For...in loopあなたの質問にもっと直接的に答えると思います。