Javascript “我该怎么办?”;当我单击“其他”按钮时,“计数器更改”;

Javascript “我该怎么办?”;当我单击“其他”按钮时,“计数器更改”;,javascript,html,css,Javascript,Html,Css,我在我的网站上有两个按钮。这里有喜欢和不喜欢的按钮。我有一个柜台。当我点击按钮时,增加计数器。在当前情况下,我单击like按钮。我不能不喜欢我的意思是我点击了不喜欢按钮,但我的决定已经改变,我想点击喜欢按钮。我能为此做些什么? 对不起我的英语 var button = document.getElementById("btn"); var buttonFlag = false; button.addEventListener("click", onClick); function onClic

我在我的网站上有两个按钮。这里有喜欢和不喜欢的按钮。我有一个柜台。当我点击按钮时,增加计数器。在当前情况下,我单击like按钮。我不能不喜欢我的意思是我点击了不喜欢按钮,但我的决定已经改变,我想点击喜欢按钮。我能为此做些什么? 对不起我的英语

var button = document.getElementById("btn");
var buttonFlag = false;
button.addEventListener("click", onClick);

function onClick() {
  if (buttonFlag) return;
  console.log("Clicked");
  buttonFlag = true;
}
我期待按钮---当我点击喜欢的计数器=+1当我点击不喜欢的计数器=-1

给你

var计数=0;
多利克斯函数(添加){
如果(添加){
计数++;
}否则{
计数--;
}
如果(计数>=0){
document.getElementById('count')。innerText=count;
}否则{
计数=0;
}
}
Like
0
不喜欢
const counterDisplay=document.getElementById(“计数器”)
window.counter=0
函数式(){
计数器+=1
counterDisplay.innerText=计数器
}
函数(){
如果(计数器>0)计数器-=1
counterDisplay.innerText=计数器
}
Like
不喜欢

0
要从共享公共“单击处理程序”的两个按钮递增或递减计数器变量,可以执行以下操作:

var计数器=0;
函数onClick(事件){
if(event.currentTarget.classList.contains('like')){
计数器+=1;
}
if(event.currentTarget.classList.contains('dislike')){
计数器-=1;
}
控制台日志(计数器);
document.querySelector('p span')。innerText=计数器;
}
document.querySelector('.like').addEventListener('click',onClick);
document.querySelector('.dislike')。addEventListener('click',onClick)
Like
不喜欢

计数器:

是的,这是我想要的。但我必须按按钮添加功能。只需单击一次。一个用户必须单击一次

var计数器=0;
函数onClick(事件){
if(event.currentTarget.classList.contains('like')){
计数器+=1;
}
if(event.currentTarget.classList.contains('dislike')){
计数器-=1;
}
控制台日志(计数器);
document.querySelector('p span')。innerText=计数器;
}
document.querySelector('.like').addEventListener('click',onClick);
document.querySelector('.dislike')。addEventListener('click',onClick)
Like
不喜欢

计数器:

以下是逻辑:

假设我们的向上投票值为“0”

用户对一条评论进行投票。该值现在为“1”

然后用户改变主意,投反对票。该值现在为“-1”,而不是0

用户不能多次向上/向下投票

编辑:我添加了一个“取消投票”功能:用户可以单击“升级投票”两次,第一次、升级投票和第二次重置投票

要验证用户是否向上/向下投票,我需要验证按钮的innerHTML状态(例如,打开按钮为“
[upvote]
”,关闭按钮的
向上投票

这就是它的作用:

函数del(){
//获得投票资格
upvote=document.getElementById(“upvote”);
downvote=document.getElementById(“downvote”);
//拿到柜台
count=document.getElementById(“count”);
//混响回投前
if(upvote.innerHTML==“[upvote]”){
//用户向上投票,重置投票
count.innerHTML=parseInt(count.innerHTML)-1;
//重置样式
upvote.innerHTML=“upvote”;
}否则{//用户已被否决,请重置投票
count.innerHTML=parseInt(count.innerHTML)+1;
downvote.innerHTML=“downvote”;
}
upvote.href=“javascript:change('0')”;
downvote.href=“javascript:change('1')”;
}
功能更改(arg){
//计票
count=document.getElementById(“count”);
//获取链接
upvote=document.getElementById(“upvote”);
downvote=document.getElementById(“downvote”);
如果(arg==0){
//如果用户想要投票
//向向上投票按钮添加效果
upvote.innerHTML=“[upvote]”;
upvote.href=“javascript:del()”;
//更新计数器
if(downvote.innerHTML==“[downvote]”){
//如果用户之前投了反对票
//增加两票而不是一票
count.innerHTML=parseInt(count.innerHTML)+2;
}否则{//用户以前没有投过反对票,添加1
count.innerHTML=parseInt(count.innerHTML)+1;
}
//重置下表决样式
downvote.innerHTML=“downvote”;
downvote.href=“javascript:change('1')”;
}
如果(arg==1){
//如果用户想要否决投票
//使向下投票不可点击
downvote.innerHTML=“[downvote]”;
downvote.href=“javascript:del()”;
//更新计数器
if(upvote.innerHTML==“[upvote]”){
//如果用户之前进行了向上投票
//取消两票而不是一票
count.innerHTML=parseInt(count.innerHTML)-2;
}否则{//用户以前没有投票,请删除1
count.innerHTML=parseInt(count.innerHTML)-1;
}
//重置向上投票样式
upvote.innerHTML=“upvote”;
upvote.href=“javascript:change('0')”;
}
}


50
首先,我看不到任何增量逻辑。其次,您只引用了一个
按钮
(以防万一,
ID
s在网页中必须是唯一的)。第三,
按钮flag
做什么。我的理解是您想要两个按钮?计数器上的第一个按钮是+1?计数器上的第二个按钮-1?这样地?请看我的答案,我认为它完全回答了您的问题。您可以使用
localStorage
cookie
进行用户控制。您使用
localStorage
cookie
标记任何用户,并且标记的用户不能按这些按钮。但是,用户可以修改和删除此数据,这也是不安全的。因此,您应该在后端检查这些控件,而不是Javascript。请查看我的答案,因为它解决了您的问题@埃伦