Javascript:用php动态var名称?

时间:2011-12-28 21:56:11

标签: php javascript dynamic variable-names

可能是一个死的简单而愚蠢的问题(我对javascript完全不熟悉):

我有这个代码通过单击“下一个”或“后退”链接来加载新帖子。使用clicks变量在sql-limit-statement中向上和向下滚动(使用swapContent函数),意味着您可以通过单击链接在数据库中向后或向前移动。它工作轻松而完美:

<script type="text/javascript">
var clicks = -1;
function increase()
{
    clicks++;
    return false;
}
function decrease()
{
  clicks--;
  return false;
}
</script>
<div id="<?php echo $post['id'].'-multipost'; ?>">
 <?php include('views/posts/_postmultipost.php'); ?>
</div>
<div id="<?php echo $post['id']; ?>-next" class="rightbutton" style="display:block;">
 <a href="#" onmousedown="increase(); javascript:swapContent('next', clicks, '<?php echo $post['id']; ?>', '<?php echo $post['title']; ?>', '<?php echo $_SESSION['user']['id']; ?>');">next</a>
</div>

<div id="<?php echo $post['id']; ?>-back" class="leftbutton" style="display:none;">
 <a href="#" onmousedown="decrease(); javascript:swapContent('back', clicks, '<?php echo $post['id']; ?>', '<?php echo $post['title']; ?>', '<?php echo $_SESSION['user']['id']; ?>');">back</a>
</div>

唯一的问题:如你所见,我有几个帖子(后ID)。但是javascript var“clicks”始终是相同的。如何将post-id添加到javascript变量名称“clicks”中,好像是这样的:

var <?php echo $post['id']; ?>-clicks = -1;

当然它不会这样,但我不知道如何管理它。有什么建议?对不起这个愚蠢的问题......

感谢您的帮助!

更新

好的,得到了​​解决方案:布莱恩是对的!!!

将代码更改为:

<script type="text/javascript">
var clicks = {};
clicks['<?php echo $post['id']; ?>'] = -1;
function increase()
{
    clicks['<?php echo $post['id']; ?>']++;
    return false;
}
</script>

html中的javascript保持不变:

<a href="#" onmousedown="increase(); swapContent('next', clicks, '<?php echo $post['id']; ?>', '<?php echo $post['title']; ?>', '<?php echo $_SESSION['user']['id']; ?>');">></a>

Clicks现在是一个对象,将在swapContent-Function中输出以下内容:

count: Array
(
    [80] => 0
)

在php中你可以像这样访问这个值:

foreach($count as $key=>$value) { $count = $value }

在javascript中,它似乎有点不同:

for(x in clicks)
{
   var clicks = clicks[x];
}

现在似乎工作得很好,感谢您的帮助!!

3 个答案:

答案 0 :(得分:0)

我对PHP并不是很熟悉,所以我不知道php echo。但是,会使用对象吗?

var postClicks = {};

postClicks['<?php echo $post['id']; ?>'] = -1;

答案 1 :(得分:0)

据我所知,你正试图解决这个问题:

var something-clicks = -1;

但是在JS something-clicks中是一个表达式 - 两个变量的减法。 与CSS相反,JS中的名称标记不能包含“ - ”。

答案 2 :(得分:0)

您遇到语法错误:

onmousedown="increase(); javascript:swapContent('next', clicks, '<?php echo $post['id']; ?>', '<?php echo $post['title']; ?>', '<?php echo $_SESSION['user']['id']; ?>');"

javascript:是问题所在。该属性预计包含原始JS,该令牌无效。用作协议的javascript用于href标记的a属性。

除此之外,它看起来还不错。只需在浏览器的JS控制台中键入clicks即可获取返回的当前值。或者将console.log('clicks:', clicks);添加到您的函数中,以便在每次单击时都记录结果。