2017-03-19 1 views
0

Je suis nouveau sur JavaScript et pousseur. Je fais un site web avec une grille cliquable, que je veux envoyer des événements poussoir chaque fois qu'une cellule est cliquée, donc la même cellule serait marquée pour tous les autres utilisateurs. J'ai réussi à m'abonner au canal Pusher et à recevoir des messages entrants (je les envoie avec un autre script pour le moment), mais je continue d'échouer à mettre à jour la grille après avoir reçu le message.Mettre à jour le document sur l'événement poussoir

var pusher = new Pusher('xxxxxxxxxxxxxxxxx', { 
    cluster: 'eu', 
    encrypted: true 
}); 
var channel = pusher.subscribe('app'); 
var grid = clickableGrid({{y}},{{x}},function(el,row,col,i){ 
    el.className = 'clicked'; 
}); 

channel.bind('cell_marked', function(data) { 
    var x = data['message'][0]; 
    var y = data['message'][1]; 
    grid.rows[x].cells[y].className == 'marked'; 
}); 

document.body.appendChild(grid); 

function clickableGrid(rows, cols, callback){ 
    var i = 0; 
    var grid = document.createElement('table'); 
    grid.className = 'grid'; 
    for (var r=0;r<rows;++r){ 
     var tr = grid.appendChild(document.createElement('tr')); 
     for (var c=0;c<cols;++c){ 
      var cell = tr.appendChild(document.createElement('td')); 
      cell.innerHTML = ++i; 
      cell.addEventListener('click',(function(el,r,c,i){ 
       return function(){ 
        callback(el,r,c,i); 
       } 
      })(cell,r,c,i),false); 
     } 
    } 
    return grid; 
} 

Comme je ne sais pas vraiment JS que je ne comprends pas pourquoi écouteur d'événements pour les cellules en cliquant sur les œuvres, en mettant à jour après réception de la notification de poussoir ne fonctionne pas.

Répondre

0

Vous devez utiliser = au lieu de == pour l'affectation ici:

grid.rows[x].cells[y].className == 'marked'; 
+1

Wow, je suis vraiment aveugle. Merci, l'homme, ça l'a fait. Je suppose que j'avais juste besoin que quelqu'un d'autre le regarde pour voir le problème évident. À votre santé! – Ijon