我从WebSocket资料中收到这样的信息:
{"sensorValue":{"id":5168,"roadStationId":23401,"name":"OHITUKSET_5MIN_LIUKUVA_SUUNTA2_MS2","oldName":"ohitukset_5min_liukuva_suunta2_MS2","shortName":"MTila2","sensorValue":69,"sensorUnit":"***"}}
{"sensorValue":{"id":5125,"roadStationId":23401,"name":"KESKINOPEUS_5MIN_LIUKUVA_SUUNTA2","oldName":"averageSpeed2","shortName":"km/h2","sensorValue":83,"sensorUnit":"km/h"}}
我想要做的是获取name和sensorValue的值。到目前为止,我有这样的代码:
function connect() {
var url = "ws://...";
var socket = new WebSocket(url);
socket.onopen = function (event) {
console.info('Socket is open');
}
socket.onmessage = function(message) {
addMessage(message);
};
}
function addMessage(message) {
var myJSON = JSON.stringify(message.data);
var obj = JSON.parse(myJSON);
document.getElementById("sensorValue").innerHTML = obj.sensorValue;
}
现在,无论我做什么,我都会得到这个:
未捕获的TypeError:无法设置null的“innerHTML”属性。
我已经尝试了几个getElementryById的网络教程,它们的工作正常。
为什么我收到此错误?
答案 0 :(得分:1)
我认为你把两件事混在一起:
您有JSON格式的响应数据,并且您希望从中读取特定值。您可以通过使用点运算符引用所需字段来执行此操作。
例如:object.fieldName;
(在您的情况下为obj.sensorValue
)
您希望使用以下方法在HTML页面中显示特定值:
document.getElementById("sensorValue").innerHTML=value_to_display
。
为此,您需要一个ID为“sensorValue”的HTML元素。你得到的错误告诉你,没有这样的元素。
例如,您可以在页面中添加<div id="sensorValue"></div>
。