2011-12-20 7 views
1

私は関数onclick secVar(sec1);を呼び出していますが、これは以下のスクリプトで実行する必要がありますが、そうでないようです。私はjavascriptには新しく、スクリプティングの経験はほとんどありません。このコードは、私が望んでいることを少なくしているようです。は、onclickという関数から渡す変数を取得できません

<script type="text/javascript"> 
     var sec1=0; 
     var sec2=0; 
     var sec3=0; 
     function secVar(){ 
      if(sec1) { 
       sec1++; 
       document.getElementById('sec1text').innerHTML = sec1; 
      } 
      if(sec2) { 
       sec2++; 
       document.getElementById('sec2text').innerHTML = sec2; 
      } 
      if(sec3) { 
       sec3++; 
       document.getElementById('sec3text').innerHTML = sec3; 
      } 
     } 

     function largestVar(){ 
       if (sec1 >= sec2 && sec1 >= sec3) { 
        //a 
        document.getElementById('rig').innerHTML = 'Test1'; 
       } else if (sec2 >= sec1 && sec2 >= sec3) { 
        //b 
        document.getElementById('rig').innerHTML = 'Test2'; 
       } else { 
        //c 
        document.getElementById('rig').innerHTML = 'Test3'; 
       } 
      } 
    </script> 

このことができます場合、私は、変数の最大を決定するためのスクリプトを追加しようとした前に、古いコードは、以下のコードでした。それは変数onclickをインクリメントしていましたが、もはやそうではありません。オンクリックはその時点でsec1Var()を含んでいた。

<script type="text/javascript"> 
    var sec1=0; 
    var sec2=0; 
    var sec3=0; 

    function sec1Var(){ 
    sec1++; 
    document.getElementById('sec1text').innerHTML = sec1; 
    } 

    function sec2Var(){ 
    sec2++; 
    document.getElementById('sec2text').innerHTML = sec2; 
    } 

    function sec3Var(){ 
    sec3++; 
    document.getElementById('sec3text').innerHTML = sec3; 
    }</script> 

誰かが私に何が間違っているのか説明することができれば、私は非常に感謝します。

答えて

1

あなたの意図が何であるかは分かりません。 Sparticusが正しくなっているIFあなたがしようとしているのは、sec1、2、および3が現在trueまたはfalse(0または1)かどうかです。彼らは現在falseであるので、コードはSparticusが正しく指摘するように決して何もしません。

しかし、私はそれが実際にあなたがすることを確信していません。確認したい条件は、sec1、2、または3をインクリメントしようとしているかどうかです。つまり、「あなたが私にsec1を渡している場合は、インクリメントしてHTMLを更新します。

しかし、変数はそのようには機能しません。 secVar(sec1)と言うとき、あなたが実際に言っていることは `secVar(0) 'です。私はそれがあなたの意図だとは思わない。

だから、私が間違っている場合は私の時間の大きな無駄が、私はすでにのは、私が正しいふりをしましょう、に沿って転がりてるので:パラメータを受け入れることができるようにする必要がありsecVar

が、右今あなたはそれを無効と宣言しました。それはパラメータを受け入れるように変更すると、最初のステップです:

function secVar(param) { ... };

しかし、これはまだ何もしません。なぜなら、あなたがまだそれを渡しているから、あなたの既存の構文で「0」を渡すからです。あなたは、文字列のように、それをチェックすることができる何かを渡す必要があります:あなたがこれを行うと、あなたは今渡さされている文字列をチェックするためにあなたの条件を更新することができます

secVar('sec1');

if (param === 'sec1') { ... }

http://jsfiddle.net/ch4yk/

注:

はここにフィドルです

  • フィディッドには、簡単なブルートフォースイベントバインディングのためのjQueryが含まれています。それは単なる例です。 jQueryは必要ありません。あなたのイベントを結びつけることができます。
  • 現在これは私がやろうとしたものであるコードはフィドルに
+0

であっても、最大値関数で何もしていません、あなたのjsfiddleは、私のトンを助けた、申し訳ありません私が持っていました私の問題を説明するのに苦労します。おかげで、 http://www.sprayfoamsys.com/cmsdev/index.php?page=rig-constructor – BrettAdamsGA

0

この実装では、カウンタが増えません。

secVar()が実行されると、すべてのカウンタはゼロになります。ゼロから始まるため、増分されません。

関連する問題