2017-03-19 3 views
0

JavaScript 및 푸셔를 처음 사용했습니다. 클릭 가능한 그리드가있는 웹 사이트를 만들고 있는데, 한 셀을 클릭 할 때마다 푸셔 이벤트를 보내려고하므로 동일한 셀이 다른 모든 사용자에게 표시됩니다. 나는 푸셔 채널을 구독하고 들어오는 메시지를 받았다. (지금은 다른 스크립트로 보내고있다.) 메시지를받은 후에 그리드를 업데이트하는 데 실패했다. 정말 JS를 알 수 없기 때문에 푸셔 통지를받은 후하지 않는 업데이트하는 동안푸셔 이벤트 문서 업데이트

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; 
} 

많이 나는 세포의 작품을 클릭에 대한 이유를 이벤트 리스너를하지 않습니다.

답변

0

현재 할당을 위해 = 대신 ==을 사용해야합니다

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

와우, 정말 장님입니다. 고마워, 그랬어. 명백한 문제를보기 위해 다른 사람이 필요하다고 생각합니다. 건배! – Ijon