2011-12-28 9 views
0

おそらく死んだ単純でばかげた質問(私は全く新しいjavascriptです):Javascript:phpを使った動的な名前

"次の"または "戻る"リンクをクリックすると、新しい投稿が読み込まれます。クリック変数は、(swapContent関数を使用して)sql-limit-statementで上下にスクロールするために使用されます。つまり、リンクをクリックしてデータベース内を前後に移動することを意味します。それは簡単で完全に動作します:

<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の「クリック」は常に同じです。どのように私はjavascriptの変数名「クリック」にポストIDを追加することができ、また、このような何か:もちろん

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

が、それはこのように動作しませんが、私はそれを管理するための方法を見当もつかない。何かアドバイス?この愚かな質問に申し訳ありません...

ありがとうございました!

UPDATE

[OK]を、解決策を得た:ブライアンは正しかったです!

<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> 

クリック数は、現在のオブジェクトで、出力はswapContent-機能に次のようになります。

はにコードを変更します
count: Array 
(
    [80] => 0 
) 

PHPでは、次のような値にアクセスします:

01このような異なるビットを動作するようですJavaScriptで
foreach($count as $key=>$value) { $count = $value } 

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

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

+0

私はあなたが何を意味しているのか完全に理解していませんが、変数名には '-'を使用できません。要素あたりのクリック数を保存しますか? – pimvdb

+0

"要素あたりのクリック数を保存しますか?"はい、そう思います。私はこのコードを(各投稿ごとに)ページに何度か印刷し、クリック変数は各投稿ごとに個別にする必要があります。これが分かりやすいことを願っています。感謝 – quartier

答えて

0

私はPHPに非常に精通していないので、私はPHPのエコーについて知りません。しかし、オブジェクトの仕事を使用するだろうか?私の知る限り、あなたがこれを取得しようとしている理解し

var postClicks = {}; 

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

ありがとう、何かが起こっている。正しいことではありませんが、ポストをロードしてスワップコンテンツ機能を起動します。私が考える正しい道だ。単純にオブジェクトを数えることは可能ですか? postclicks ['<?php echo $ post [' id ']; ?> '] ++ – quartier

0

var something-clicks = -1; 

しかしJS something-clicksでは表現である - 二つの変数のsubstraction。 JSの名前トークンには、CSSとは逆に ' - 'を含めることはできません。

+0

ありがとうございますが、それは' - 'そのようにも機能しません。 varの名前がPHPエコーで動作しないようです... – quartier

0

あなたは構文エラーがあります。

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

javascript:が問題であることを。そのプロパティには生JSが含まれていることが予想され、そのトークンは無効です。プロトコルとして使用されるjavascriptはaタグのhrefプロパティで使用するためのものです。

それ以外は大丈夫です。ブラウザのJSコンソールにclicksと入力するだけで、現在の値が返されます。または、各クリックで結果がログアウトするように、関数にconsole.log('clicks:', clicks);を追加します。

+0

ありがとう、これを修正しましたが、いずれも動作しませんでした... – quartier

関連する問題