使用Javascript取消单击已单击按钮的方法
有没有办法取消选择或取消单击使用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"; } 因此,当我单击该按钮时,它会将文本变成粉红色。有没有办法再次点击按钮,让它取消按键并将文本变回
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);
});