4

私は現在、コードの先頭でtweetCountを宣言するTwitterウィジェットに取り組んでいます。PHPとJavaScriptの両方を使用します。コピーと貼り付けを使用してハードコーディングすることで、作業中のコードをクリーンアップしようとしています。特に、後でツイート数を変更する場合は、これは明らかにひどい方法です。PHPでは、ループ内の反復に基づいて値が増加する変数、つまりtweet1、tweet2、tweet3などを作成できることを知っています。JavaScriptまたはjQueryでこれと同じ効果をどのように実行するのか疑問に思っています。私が現在持っているJavaScriptのサンプルコードは以下の通りです。完全なスクリプトを確認したい場合は、ここで完全なコードを表示できます。jQueryまたはJavaScriptのいずれかでコードを自動インクリメントするにはどうすればよいですか?私はこれを見ましたstackoverflow postですが、コードで機能するように統合する方法を完全には理解していませんでした。実例はここにあります。どんな助けでも大歓迎です。

編集:

PHPがTwitterのAPIからのJSONフィードからプルする方法の性質を反映するようにコードを更新しました

EDIT2:

純粋なJavaScriptに切り替えて、コードをクリーンアップし、すべてのクライアント側で呼び出しを行うことに加えて、作業をよりクリーンにします。それを反映するようにコードを更新します。アドバイスと助けてくれてありがとう!

EDIT3:[最終結果]

だから私は最終的なコードを投稿することを約束しました。ヘルプへのすべての入力に感謝します。友達からも少し助けてもらった。こちらがリンクです。質問は?お気軽にご連絡いただければ、喜んでお答えいたします。純粋なJavaScriptに切り替えただけで、約40行のコードを削除して、それがどれだけ役に立ったかを確認できるようにしました。さらに、Twitter APIはセキュリティ上の理由からクライアント側の呼び出しを許可していないので、残念ながらPHPで呼び出しを行う必要がありました。すべてをJavaScriptで実行できればよかったのですが、スクリプトに小さなPHPを使用する必要があると思います。純粋なJavaScriptでも、コードはずっとすっきりしています。

JavaScriptを可能にしたコード:

<?php
    $tweetData = file_get_contents("https://api.twitter.com/1/statuses/user_timeline.json?screen_name=$username&count=$tweetCount");
    echo "<script> var tweets = " . $tweetData . ";</script>";
?>

初期コード:

<?php for($i = 0; $i < $tweetCount; $i++) { ?>
    ${"tweet{$i}"} = $decode[$i][text];
    ${"tweetTime{$i}"} = $decode[$i][created_at];
    <script type="text/javascript">
       var i = "<?php echo $i ?>";
       var tweetTime1 = "<?php echo ${"tweetTime{$i}"} ?>";
       var datebefore1 = new Date(tweetTime1.replace(/^\w+ (\w+) (\d+) ([\d:]+) \+0000 (\d+)$/, "$1 $2 $4 $3 UTC"));
       var tempdate1 = datebefore1.toString();
       var date = "GMT-0800 (Pacific Standard Time)";
       var date1 = tempdate1.split(date)[0];
    </script> <?php
} ?>
4

2 に答える 2

3

すべてのphpデータをjs変数に入れることができます。

その後、純粋なjsを使用して、それらを再度混合しないでください。

//['item1','item2','item3'],js array formation
var jsData = <?php echo $decode ?>;
var jsCount = <?php echo $tweetCount ?>;
for(var i=0;i<jsCount;i++){
    alert(jsData[i]);
}

//また

<script type="text/javascript">
<?php 
for ($i = 0; $i < $tweetCount; $i++) {
?>
    //here you can get your tweet1,tweet2,tweet3...
    var tweet<?php echo $i ?> = "<?php echo $i ?>"+'any data you want to append.';  
<?php
}
?>
</script>
于 2012-12-31T06:09:06.560 に答える
2

簡単にするために、次のように配列からJavaScript配列を作成できます$tweetCount

$temp = "var temp = new Array();";
for($i = 0; $i < $tweetCount; $i++) {
   $temp.="temp.push(new Array(".$tweetCount[$i].")";
} 

$tempこの変数をJavaScriptスクリプトタグにエコーします。その後、次tempのようにJavaScriptスクリプトで配列を使用できます。

for(var i=0;i<temp.length;i++){
    console.log(temp[i]);
}
于 2012-12-31T06:24:41.993 に答える