4

我现在正在开发一个 twitter 小部件,它在代码的开头声明了一个 tweetCount。它同时使用 PHP 和 JavaScript。我正在尝试通过简单地使用复制和粘贴对其进行硬编码来清理我工作的代码,现在显然这是一种糟糕的方法,尤其是当我想稍后修改推文计数时。我知道在 PHP 中,您可以创建基于循环中的迭代值递增的变量,即 tweet1、tweet2、tweet3 等。我想知道如何在 JavaScript 或 jQuery 中实现相同的效果。我目前拥有的 JavaScript 的示例代码如下。如果您想查看完整的脚本,可以在此处查看完整的代码。如何在 jQuery 或 JavaScript 中自动递增代码?我看着这个stackoverflow post,但不完全了解如何将其集成到我的代码中。现场示例可以在这里找到。任何帮助将非常感激。

编辑:

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

编辑2:

切换到纯 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

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

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

在你的 JavaScript 脚本标签中回显这个$temp变量。之后,您可以temp在 JavaScript 脚本中使用您的数组,如下所示:

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