2017-03-26 15 views
-1

ジャバスクリプトを通じてSPANタグを無効にする方法を、私はスパンを持っています(完全に正常に動作します)例えば

<span class="alphStyle" id="a1">a</span> 
<span class="alphStyle" id="a2">b</span> 
<span class="alphStyle" id="a3">c</span>... 

...とそう

上と機能をクリックしてください:

var on = document.querySelectorAll(".alphStyle");  
for (var i = 0; i < on.length; i++){ 
     on[i].addEventListener('click', function(){ 
      var whatLetter = this.innerHTML; 
      var num = 0; 
      var trueCount = 0; 
      for (num = 0; num < guessWord.length; num++) { 
       if (whatLetter == guessWord.charAt(num)) { 
        secretW.getElementsByClassName("lineStyle")[num].innerHTML = whatLetter; 
        this.style.backgroundColor = "rgb(65,208,65)"; 
        trueCount++; 
        trueCount2++; 
       } 
      } 
      if (trueCount == 0) { 
       mistake(); 
       this.style.backgroundColor = "rgb(255,100,100)"; 
      } 
      this.disabled = true;//this one doesn't work 

     }); 
    } 

それは私がすでにクリックしたスパンを無効にしたいという点を除いて、完璧に機能します。出来ますか?ここにどのようなコードを追加すればよいですか?

+1

あなたは無効に何を意味するのですか? – Charlie

+0

これらのスパンにはクリック機能があります。私は正確にそれを無効にしたい。 –

答えて

0

スパンをクリックすると、データ属性を設定/確認できます。

var on = document.querySelectorAll(".alphStyle");  
for (var i = 0; i < on.length; i++){ 
    on[i].addEventListener('click', function(){ 
     if(this.dataset.disabled!="yes") { 
     var whatLetter = this.innerHTML; 
     var num = 0; 
     var trueCount = 0; 
     for (num = 0; num < guessWord.length; num++) { 
      if (whatLetter == guessWord.charAt(num)) { 
       secretW.getElementsByClassName("lineStyle")[num].innerHTML = whatLetter; 
       this.style.backgroundColor = "rgb(65,208,65)"; 
       trueCount++; 
       trueCount2++; 
      } 
     } 
     if (trueCount == 0) { 
      mistake(); 
      this.style.backgroundColor = "rgb(255,100,100)"; 
     } 
     this.dataset.disabled = "yes"; 
     } 
    }); 
} 
ここ

実施例は、https://jsfiddle.net/yd7w62e6/1/

+0

いいえ、助けてくれませんでした –

+0

あなたはもっと具体的になりますか? @bleatinterteiment – AZee

+0

ここに動作例がありますhttps://jsfiddle.net/yd7w62e6/1/ – AZee

0

将来のクリックによるクリックハンドラのトリガを防ぐことを目標にしている場合は、removeEventListener()を使用してクリックハンドラを削除できます。これを行うには、後で参照できる変数にリスナーを割り当てる必要があります。

var on = document.querySelectorAll(".alphStyle");  

var handler = function(){ 
    // ... 
    this.removeEventHandler('click', handler); 
}; 
for (var i = 0; i < on.length; i++){ 
    on[i].addEventListener('click', handler); 
} 
+0

私の目標は、正確にクリックされた「スパン」を無効にすることです。だから、再びクリックすると、関数は実行されません。あなたが私の右を得たことを願って –

+0

ええ、このコードはトリックを行う必要があります。 – Charlie