Zuerst - ich bin kein Programmierer, ich bin hier zum ersten Mal posten. Ich habe ein paar Tage lang verschiedene Wege ausprobiert und kann das nicht zur Arbeit bringen.Node.js + JavaScript: Rückgabewert, nicht [Objekt HTMLDivElement]
Ich habe ein Problem beim Anzeigen der Temperatur, die von der seriellen Schnittstelle auf der Webseite empfangen wird.
Hier ist mein app.js Code:
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;
});
});
});
Dann in index.html ich diese Funktion erstellt haben:
function getTemperatureA() {
var socket = io.connect('http://localhost:8080');
var temperature1 = 0;
socket.on('data', function (data) {
tt1 = data;
});
return tt1;
}
Und wenn in Datei index.html Ich benutze Dieser Code:
document.getElementById('tt1').innerHTML = "Temperature: " + getTemperatureA();
Ich bekomme diese:
Temperatur: [object HTMLDivElement]
Wenn ich meine Funktion als dies:
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;
});
}
Und dann in index.html dieser:
<div id="tt1"></div>
getTemperatureA('tt1');
Dann funktioniert es und zeigt die Temperatur als 24.2 (zum Beispiel).
Die Hauptfrage ist also, wie man nur einen Wert zurückgibt? Ich brauche diesen Wert in einer anderen Funktion, um ein Messgerät für die Temperatur zu zeichnen, indem ich den Wert meiner Funktion verwende?
Sie können in einer solchen Situation keinen Wert zurückgeben.Die zweite Version Ihrer Funktion ist so, wie sie funktionieren sollte. – Pointy