首页 > 解决方案 > Javascript html 无法设置属性

内部套接字 IO 发射

问题描述

我有一些很奇怪的东西每当我尝试这段代码时它都会出错

socket.emit('TotalEarningsDays', '?', (data) => {
    console.log(data.TotalSunday);
    Test()
    
});
    
function Test(){
     var x = document.getElementById("TotalEarningsChart");

     x.setAttribute("data-series",'[[{"meta":"Sunday","value":"33"}, {"meta":"Monday","value":"87"},{"meta":"Tuesday","value":"470"},{"meta":"Wednesday","value":"580"},{"meta":"Thursday","value":"380"},{"meta":"Friday","value":"600"},{"meta":"Saturday","value":"707"}]]');
}

所以这样它给出错误说

VM4401:26 Uncaught TypeError: Cannot read property 'setAttribute' of null
at Test (<anonymous>:26:9)
at r.<anonymous> (<anonymous>:19:1)
at r.onack (index.js:83)
at r.onpacket (index.js:83)
at r.<anonymous> (index.js:83)
at r.emit (index.js:83)
at r.ondecoded (index.js:83)
at a.<anonymous> (index.js:83)
at a.r.emit (index.js:83)
at a.add (index.js:83)

但是,如果我在套接字 Io Emit 回调之外调用 Test 函数,它可以工作但我需要它在发射内部,这样我才能获取数据这样它就可以工作

socket.emit('TotalEarningsDays', '?', (data) => {
     console.log(data.TotalSunday);
});
    
Test()

function Test(){
    var x = document.getElementById("TotalEarningsChart");
    
    x.setAttribute("data-series",'[[{"meta":"Sunday","value":"33"}, {"meta":"Monday","value":"87"},{"meta":"Tuesday","value":"470"},{"meta":"Wednesday","value":"580"},{"meta":"Thursday","value":"380"},{"meta":"Friday","value":"600"},{"meta":"Saturday","value":"707"}]]');
}

它让我想起了java主线程

标签: javascriptsocket.io

解决方案


推荐阅读