【发布时间】:2019-01-16 21:47:03
【问题描述】:
我的 javascript 代码有问题,我有一个 sn-p,它根据循环范围创建多个按钮,这些按钮共享相同的类但 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>
我做错了什么?
【问题讨论】:
-
fyi,
$('#' + this.id)只是$(this)...其次,您有一个布尔值clicked,您试图用它来“存储”多个按钮的状态 - 一个布尔值一键:p -
而不是获取 id 并使用它,而是使用这个上下文,如
$(this) -
@guradio 你不认为点击按钮
transferField()不会调用他编写的点击代码吗? -
@guradio 你的意思是这个 clicked = true; $(".guess").click(function(){ console.log(this) if(clicked){ $(this).css('background-color', '#FF8E2B'); clicked = false; } else { $(this).css('background-color', '#27AE60'); clicked = true; } });即使这仍然没有单独更改按钮背景
-
@AlivetoDie transferField() 做了其他事情,与问题无关
标签: javascript jquery