首先 - 我不是编码员,我在这里第一次发布。我尝试了几天不同的方式,但无法使其工作。Node.js + JavaScript:返回值,而不是[object HTMLDivElement]
我有一个问题,显示从串口接收到的网页温度。
这里是我的app.js代码:
var http = require('http');
var express = require('express');
var app = express();
var SerialPort = require("serialport");
var server = http.createServer(app).listen(8080);
var io = require('socket.io').listen(server);
app.use(express.static(__dirname + '/public'));
var serialport = new SerialPort("/dev/cu.wchusbserialfd1210", {
baudrate: 9600,
parser: SerialPort.parsers.readline("\r\n")
});
serialport.on('open', function(){
// Now server is connected to Arduino
console.log('Serial Port Opened');
var lastValue;
io.sockets.on('connection', function (socket) {
//Connecting to client
console.log('Socket connected');
socket.emit('connected');
var lastValue;
serialport.on('data', function(data){
console.log(`Serial got: ${data}`);
var temperature1 = data.trim();
if(lastValue !== temperature1){
socket.emit('data', temperature1);
}
lastValue = temperature1;
});
});
});
然后在的index.html我创造了这个功能:
function getTemperatureA() {
var socket = io.connect('http://localhost:8080');
var temperature1 = 0;
socket.on('data', function (data) {
tt1 = data;
});
return tt1;
}
而当我使用的index.html文件此代码:
document.getElementById('tt1').innerHTML = "Temperature: " + getTemperatureA();
我得到这个:
温度:[对象HTMLDivElement]
如果我用我的功能,因为这:
function getTemperatureA(id) {
var socket = io.connect('http://localhost:8080');
var temperature1 = 0;
var box = document.getElementById(id);
socket.on('data', function (data) {
box.innerHTML = data;
});
}
然后在index.html的这个:
<div id="tt1"></div>
getTemperatureA('tt1');
然后它工作并显示温度为24.2(例如)。
所以主要问题是如何返回一个值?我需要另一个函数中的这个值来使用我的函数中的值来绘制温度的标尺?
在这种情况下,您无法返回值。你的功能的第二个版本是它应该工作的方式。 – Pointy