我正在使用raphaeljs和socketIO進行實時數據演示。我有我的畫布上的圓圈代表節點,他們被存儲在nodeStatus
對象nodeStatus[id].obj
其中「ID」可以是「101」,「102」等,我試圖實現一個函數來隨機刪除先前繪製的圓圈(節點)從客戶端瀏覽器的畫布。從畫布中刪除隨機的raphael元素
用於發送節點ID & obj的服務器端腳本是:socket.emit("randomNode",randomNode,nodes[randomNode]);
。 randomNode包含我想要移除的圓的ID。節點[randomNode]是存儲該節點信息的對象。
下面是我的客戶端html中的相關部分。 (節點ID是我想從帆布/紙上除去(圓圈(節點)的ID)和obj是相應的對象)
socket.on("randomNode",function (nodeID, obj){
nodes[nodeID] = obj;
console.log(nodeID,obj);
updateNodeStatus(nodeID);
console.log(nodeStatus[nodeID]);
nodeStatus[nodeID].obj.remove();
nodeStatus[nodeID].idText.remove();
});
的nodeStatus[nodeID].obj.remove();
生產「類型錯誤:nodeStatus [ID]的obj是未定義「錯誤。
console.log(nodeID);
打印預期值如「101」,「102」等,並且nodeStatus[102].obj.remove();
從畫布上移除「具有id = 101的raphael對象」。但nodeStatus[nodeID].obj.remove();
不能正常工作。有人能指出我做錯了什麼嗎?
任何機會,你可以得到一個jsfiddle的測試例子,或至少更多的nodeStatus周圍的代碼,當它的內置。特別是做一個console.log(nodeStatus [nodeID]);你在那裏有你的代碼,但實際上並不是它輸出的內容。 – Ian
無法在jsfiddle上獲取我的代碼,因爲它具有服務器端「.js」,服務器端「config.js」和客戶端端「.html」用於socket.io。不過,我得到了它的工作。謝謝。 –