jQuery如果else不工作,请单击

jQuery如果else不工作,请单击,jquery,node.js,Jquery,Node.js,我一直想让它工作,但没有成功。代码似乎在第一次单击时就可以正常工作,但在几次单击后,它会随机输出if条件的次数不断增加 在服务器端,我在Node.js上安装了 var sys = require('sys'); var net = require('net'); var mqtt = require('mqttclient'); var io = require('socket.io').listen(5000); var client = new mqtt.MQTTClient(1883,

我一直想让它工作,但没有成功。代码似乎在第一次单击时就可以正常工作,但在几次单击后,它会随机输出if条件的次数不断增加

在服务器端,我在Node.js上安装了

var sys = require('sys');
var net = require('net');
var mqtt = require('mqttclient');

var io  = require('socket.io').listen(5000);
var client = new mqtt.MQTTClient(1883, '192.168.1.33', 'SERVER NODO');

io.sockets.on('connection', function (socket) {
  socket.on('subscribe', function (data) {
    console.log('Subscribing to '+data.topic);
    client.subscribe(data.topic);
  });

});


io.sockets.on('connection', function (socket) {

socket.on('publish', function (data){
console.log('publishing to '+data.topic);
client.publish(data.topic,data.payload);

});


});

//Sends to Web 
client.addListener('mqttData', function(topic, payload){
  sys.puts(topic+'='+payload);
  io.sockets.emit('mqtt',{'topic':String(topic),
    'payload':String(payload)});
}); 
在客户端,我有一个页面,可以正确加载,第一个if块似乎很好,第二个是我遇到问题的块。我没有任何编程经验,但我正在努力学习

已经尝试了不同的组合以使其工作(例如,在if contion之后单击,但结果相同)

<link rel="stylesheet" href="style2.css">
<script type="text/javascript" src="http://192.168.1.33:5000/socket.io/socket.io.js</script>
<script type="text/javascript" src="jquery-1.8.3.js"></script>
<script type="text/javascript">
  var socket = io.connect('http://192.168.1.33:5000');
$(document).ready(function(){
    socket.on('connect', function () {
      socket.on('mqtt', function (msg) {

        console.log(msg.topic+' '+msg.payload);

           var classe = 0;

                if (msg.topic == "uno"){

                  if (msg.payload == "a")
                     $('#button').addClass('on');
                      classe = 1;       
                  if (msg.payload == "b")
                     $('#button').removeClass('on');
              casse = 0;        


            }

            $('#button').on('click', function(){

                        if (classe == 1)){ 
                               classe = 3;
                               socket.emit('publish',{topic:"unor", payload:"off"});
                        }

                        if (classe == 0){
                               classe = 3;
                               socket.emit('publish',{topic:"unor", payload:"on"});

                        }
            }); 

}); 

 socket.emit('subscribe',{topic:"uno"});


});
</script>
<tbody>
        <section>
            <a href="#" id="button">&#xF011;</a>
            <span></span>
        </section>
</tbody>


您的问题可能是单击事件尝试以下代码

$('#button').off('click').on('click', function(){

      if (classe == 1)){ 
               classe = 3;
               socket.emit('publish',{topic:"unor", payload:"off"});
                      }

      if (classe == 0){
              classe = 3;
              socket.emit('publish',{topic:"unor", payload:"on"});
                     }
            }); 

我希望这将对您有所帮助。

很高兴听到这有帮助!只是一个简短的说明。处理
msg.payload
的top
if
语句没有适当的括号。因为它们当前是编写的,这两个
ifs
的第二个语句将随时执行(
classe=1;
casse=0;
,我也认为这是
classe
的打字错误)。仅供参考。它不会因为逻辑错误而中断,尽管它可能不会产生预期的结果。祝您编码愉快,新年快乐!