JavaScriptコードに問題があります。ループ範囲に応じていくつかのボタンを作成するスニペットがありますが、ボタンは同じクラスを共有しますがidは異なります。クリックしたときに複数のボタンの色を別々に変更する
<div class="panel-footer" id="loop">
<ul class="post-action">
{% for i in range %}
<button class="btn btn-success guess" id="{{ i }}" value="{{ i }}" onclick="transferField(this.value)">{{ i }} </button>
{% endfor %}
</ul>
</div>
ボタンをクリックして再度クリックすると、デフォルトの色に戻りますが、ボタンがクリックされたときにボタン5をクリックするとボタン6をクリックすると、ボタン6をクリックするか、もう一度別のボタンをクリックするまで、色は変わりません。ここにjsコードがあります:
<script>
clicked = true;
$(".guess").click(function(){
xyz = this.id
console.log(xyz)
if(clicked){
$('#' + this.id).css('background-color', '#FF8E2B');
clicked = false;
} else {
$('#' + this.id).css('background-color', '#27AE60');
clicked = true;
}
});
</script>
どうしたのですか?
ちなみに、 '$( '#' + this.id)'され、単純に '$(この)' ...そして第二に、あなたは、単一のブール 'clicked'を持っています複数のボタンの状態を格納するために使用しようとしています - 一つのボタンのブール値:idを取得する代わりにp –
の代わりに '$(this) 'のようなコンテキストを使用してください – guradio
@guradioボタン 'transferField()'は、彼が書いたクリックコードではなく呼ばれますか? –