使用Javascript取消单击已单击按钮的方法

使用Javascript取消单击已单击按钮的方法,javascript,events,button,Javascript,Events,Button,有没有办法取消选择或取消单击使用javascript单击的按钮 所以基本上我有一个按钮: if (i === 10) { var clicked = document.getElementById('i10'); clickedButton.push(click.textContent); clicked.style.color = "pink"; } 因此,当我单击该按钮时,它会将文本变成粉红色。有没有办法再次点击按钮,让它取消按键并将文本变回

有没有办法取消选择或取消单击使用javascript单击的按钮

所以基本上我有一个按钮:

if (i === 10) {
        var clicked = document.getElementById('i10');
        clickedButton.push(click.textContent);
        clicked.style.color = "pink";
}
因此,当我单击该按钮时,它会将文本变成粉红色。有没有办法再次点击按钮,让它取消按键并将文本变回黑色


对不起,Javascript不是我的强项

从共享代码中,您可以执行类似以下操作:检查textContent是否已存在于数组中,如果已存在,则它已被单击,因此将其从数组中删除并更改颜色

if (i === 10) {
    var clicked = document.getElementById('i10'),
        index = clickedButton.indexOf(click.textContent);
    if (index > -1) {
        clickedButton.push(click.textContent);
        clicked.style.color = "pink";
    } else {
        clickedButton.splice(index, 1);
        clicked.style.color = "";
    }
}
这对你有帮助吗

function onclick(){
        var clicked = document.getElementById('i10');
        if(clicked.style.color == "pink"){
            clicked.style.color == "black";
        }
        else{
            clicked.style.color == "pink";
            //do your businesses                
        }
}
是的:

这将检查单击按钮数组中是否已存在
click.textContent
。如果是,它将从该数组中删除它,并将按钮颜色重置为默认值

请注意,IE7-8不支持使用
indexOf
搜索数组。如果您需要对这些浏览器的支持,您还需要实现以下功能:

if (!('indexOf' in Array.prototype)) {
    Array.prototype.indexOf= function(find, i /*opt*/) {
        if (i===undefined) i= 0;
        if (i<0) i+= this.length;
        if (i<0) i= 0;
        for (var n= this.length; i<n; i++)
            if (i in this && this[i]===find)
                return i;
        return -1;
    };
}
if(!('indexOf'在Array.prototype中)){
Array.prototype.indexOf=函数(find,i/*opt*/){
如果(i==未定义)i=0;

如果(iWeb编程课程时间:如果你想设置样式,不要使用JavaScript来设置样式,使用CSS来定义样式,然后只使用JavaScript来指向该CSS

在CSS中:

.highlight {
  color: pink;
  background: blue;
  font-style: fantasy;
  whatever-else: StuffGoesHere;
}
然后是您的按钮处理:

button.addEventListener("click", function(evt) {
  var e = find.your.element.however.you.need();
  e.classList.toggle("highlight");
});
魔术:只要以正确的方式做事情,代码就非常直接,我们不是硬编码样式,我们只是指应该在哪里定义样式

“但是如果浏览器不支持.classList怎么办?”:这样说的唯一原因是,您没有跟上浏览器的改进程度

当然,如果您需要做的不仅仅是切换,请将函数作为独立操作编写,并向其抛出元素:

var records = {};

function toggleHighlight(e) {
  e.classList.toggle("highlight");
  if (e.classList.contains("highlight")) {
    // element is now highlighted, do things accordingly:
    records[e.id] = e.textContent;
    // ...
  } else {
    records[e.id] = false;
    // ...
  }
}

button.addEventListener("click", function(evt) {
  var e = find.your.element.however.you.need();
  toggleHighlight(e);
});

“松开”是什么意思?单击按钮后,它不会保持状态,除非您设置了某种标志。您的意思是取消单击事件的绑定吗?@PatrickEvans可能会有所帮助。在我的情况下,我单击更改文本的按钮。现在我想松开按钮,它会从一开始就删除该单击。这是否有帮助ke sense?你能分享代码示例吗?解释你在寻找什么?当再次单击同一个按钮时,你想把原始文本放回原处吗?如果你解释了你所拥有的和你想要的,那就更好了。你真的需要把所有这些解释放到你的帖子中,消除所有的猜测。你还应该分享代码wha到目前为止,你还没有改变按钮状态。这与颜色有关。有没有办法取消在单击按钮时在开始时按下的文本内容?我花了两天的时间假设这是可能的。可能不会。希望这个评论能对线程起到推动作用。
var records = {};

function toggleHighlight(e) {
  e.classList.toggle("highlight");
  if (e.classList.contains("highlight")) {
    // element is now highlighted, do things accordingly:
    records[e.id] = e.textContent;
    // ...
  } else {
    records[e.id] = false;
    // ...
  }
}

button.addEventListener("click", function(evt) {
  var e = find.your.element.however.you.need();
  toggleHighlight(e);
});