-1

リンクにonclickメソッドを追加しようとしています。

ユーザーがlinkAをクリックしたときにa++を作成し、値が何であれ、ユーザーがlinkBをクリックしたときにa--を作成したいと思いますa

私のコード:

JS

var a=0;

function swapPost(a){

 //I want to make a++ when user click linkA;
 //a-- when user click linkB
 //not sure how to do this

   if(a>10){
    a=0;
   }
    if(a<0){
    a=0;
   }

}

swapPost(a);

HTML

<a href="#" onclick="swapPost(a)">LinkA</a>
<a href="#" onclick="swapPost(a)">LinkB</a>

誰かがこれについて私を助けてくれるかどうか疑問に思いました。どうもありがとう。

4

3 に答える 3

2

aパラメータとして渡すのではなく、クリックされたリンクをその ID (まだ定義していません) を介して渡します。関数に渡しthisます。

<a id='linka' href="#" onclick='swapPost(this)'>LinkA</a>
<a id='linkb' href="#" onclick='swapPost(this)'>LinkB</a>

var a=0;    
function swapPost(nodeClicked){
   // Check the id of the node passed to the function.
   if (nodeClicked.id == 'linka') {
     a++;
   }
   else if (nodeClicked.id == 'linkb') {
     a--;
   }
   else return;

   // Set to zero if outside your bounds
   if(a>10){
    a=0;
   }
    if(a<0){
    a=0;
   }
}

これが実際の動作で、コンソールにログを記録しています...

一般に、関数をインラインで属性にコーディングするよりも、関数をイベントにバインドすることをお勧めします。this内部はクリックされたノードを参照するためonclick、実際にパラメーターとして渡す必要はありません。次に、インラインで実行せずに onclick イベントをバインドし、this内部で呼び出すことができます。

<a id='linka' href="#">LinkA</a>
<a id='linkb' href="#">LinkB</a>

var a=0;    
var swapPost = function(){
   // Check the id of the node passed to the function.
   if (this.id == 'linka') {
     a++;
   }
   else if (this.id == 'linkb') {
     a--;
   }
   else return;

   // Set to zero if outside your bounds
   if(a>10){
    a=0;
   }
    if(a<0){
    a=0;
   }
}
// Bind the function to the links
document.getElementById('linka').onclick = swapPost;
document.getElementById('linkb').onclick = swapPost;

更新されたバージョンの動作は次のとおりです

于 2012-07-06T02:50:12.347 に答える
1
<a href="#" id="a">LinkA</a>
<a href="#" id="b">LinkB</a>​

JS

<script type="text/javascript">
window.onload=function(){
    var a=0;
    var els=document.getElementsByTagName('a');
    for(i=0;i<els.length;i++)
    {
        (function(i){
            els[i].onclick=function(){
                if(this.id=='a') a++;
                else a--;
                a = a < 0 ? 0 : (a > 10 ? 0 : a);
                return false;
            }
        })(i);
    }
}
</script>

デモ。

于 2012-07-06T02:47:52.737 に答える
0

これを試してください:Javascript:

var a=0;
function swapPost(val){
  a=a+val;
 }

HTML:

  <a href="#" onclick='javascript:return swapPost(1);'>LinkA</a>
  <a href="#" onclick='javascript:return swapPost(-1);'>LinkB</a>
于 2012-07-06T02:54:37.053 に答える