0

可能是一个简单而愚蠢的问题(我对 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;

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

谢谢你的帮助!

更新

好的,找到解决方案:Bryan 是对的!!!

将代码更改为:

<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];
}

现在似乎可以正常工作了,谢谢您的帮助!!

4

3 回答 3

0

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

var postClicks = {};

postClicks['<?php echo $post['id']; ?>'] = -1;
于 2011-12-28T22:00:55.330 回答
0

据我了解,您正试图得到这个:

var something-clicks = -1;

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

于 2011-12-28T22:02:20.693 回答
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

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

于 2011-12-28T22:05:19.190 回答