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変数の「クリック数」は常に同じです。ポスト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];
}

今は完璧に動作しているようです、あなたの助けに感謝します!!

4

3 に答える 3

0

私はPHPにあまり詳しくないので、phpエコーについては知りません。ただし、オブジェクトの使用は機能しますか?

var postClicks = {};

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

私が理解している限り、あなたはこれを手に入れようとしています:

var something-clicks = -1;

しかし、JSsomething-clicksには式があります-2つの変数の減算。CSSとは異なり、JSの名前トークンに「-」を含めることはできません。

于 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 に答える