可能是一个死的简单而愚蠢的问题(我对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];
}
现在似乎工作得很好,感谢您的帮助!!
答案 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);
添加到您的函数中,以便在每次单击时都记录结果。