在JavaScript或jQuery中增加变量

时间:2012-12-31 05:43:10

标签: php javascript jquery twitter

我正在开发一个twitter小部件,它在代码的开头声明了一个tweetCount。它使用PHP和JavaScript。我试图通过硬编码简单地使用复制和粘贴来清理我工作的代码,现在显然这是一种可怕的方式,特别是当我想稍后修改推文计数时。我知道在PHP中你可以根据你在循环中的迭代创建值递增的变量,即tweet1,tweet2,tweet3等。我想知道如何在JavaScript或jQuery中做同样的效果。我目前的JavaScript示例代码如下。如果要查看完整脚本,可以查看完整代码HERE。如何在jQuery或JavaScript中自动增加代码?我查看了这个stackoverflow post,但没有完全理解如何将它集成到我的代码中。可以找到实时示例HERE。任何帮助将不胜感激。

修改

更新了代码,以反映PHP从Twitter的API中提取JSON提要的方式

EDIT2:

切换到纯JavaScript,使其更清晰,除了清理代码和调用所有客户端。我将更新代码以反映它。感谢您的建议和帮助!

EDIT3:[最终结果]

所以我答应我会发布最终的代码。这是结果,感谢您提供的所有帮助。我也得到了朋友的帮助。 HERE是链接。任何问题?请随时与我联系,我很乐意回答他们。我最终只是从切换到纯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
} ?>

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:2)

为简单起见,您可以从$tweetCount数组创建JavaScript数组,如下所示:

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

在JavaScript脚本代码中回显此$temp变量。之后,您可以在JavaScript脚本中使用temp数组,如下所示:

for(var i=0;i<temp.length;i++){
    console.log(temp[i]);
}