2016-04-08 14 views
1

Ich habe eine HTML-Datei, die eine JavaScript-Funktion aufruft, um eine 6-stellige Eingabe vom Benutzer zu erhalten.So exportieren Sie eine Javascript-Variable zu Knoten js

<html> 
    <head> 
     <script src="ho.js"></script> 
     <h1>Sample</h1> 
    </head> 
    <body> 
      <input type="tel" id="realOTP" placeholder="Enter Your OTP" maxlength="6"> 
      <input type="submit" value="Use OTP" onclick="compute()"> 
    </body> 
</html> 

Dies ist die ho.js Javascript-Datei, in der die Funktion definiert ist.

var a=10, arr=[]; 
var exports = module.exports = {}; 
function compute() { 
    rOTP = document.getElementById('realOTP').value; 
    if (rOTP.length == 0) { 
     alert('Enter a value'); 
     return; 
    }; 
    arr = String(rOTP).split(""); 
    console.log("Entered OTP -> " + arr); 
    return arr; 
} 
    exports.array = compute.arr;//what should come here? 
exports.r = a; 
    console.log("a:" +a); 
exports.fun =function(){ 
    console.log("in function"); 
    var mes = require("./ho").r; 
    console.log("mes:"+mes); 
    var mes2 = require("./ho").array; 
    console.log("mes2:"+mes2); 
} 

Ist es möglich, den Rückgabewert der JavaScript-Funktion („arr“ in diesem Fall) an den Knoten js Exporte in der globalen Variable a = 10 ähnliche Funktion zu exportieren. Dies ist meine Haupt-Node-Datei, die ich anrufe, nachdem ich den Wert von "arr" über den Browser erhalten habe.

hoh.js

var call = require("./ho"); 
console.log("hoh:" +call.r); 
call.fun(); 

Dies ist die Ausgabe erhalte ich, wenn ich hoh.js laufen:

C:\Users\Balajee\Desktop\project\Ultro>node hoh.js 
a:10 
hoh:10 
in function 
mes:10 
mes2:undefined 
+0

Können Sie versuchen 'exports.array = compute()' – JordanHendrix

+0

@JordanHendrix Es ist wie Compute aussieht() soll durch die Submit-Button in seine HTML aufgerufen werden. Wenn das Ergebnis von compute exportiert wird, kann der Code keine Änderungen an der Eingabe mit der ID "realOTP" berücksichtigen. – mjohnsonengr

+0

Ich bekomme DOM-Fehler, weil compute eine Javascript-Funktion ist, die im Browser ausgeführt wird. Wenn ich es dem Knoten zuweise, der abläuft, wird der Browser den Fehler C: \ Benutzer \ Balaje \ Desktop \ Projekt \ Ultro \ ho.js ausgeben: 4 rOTP = document.getElementById ('realOTP'). ^ ReferenceError: Dokument ist nicht definiert –

Antwort

0
exports.arr = arr; 

das Array exportieren. Aber das Array wird in compute neu zugewiesen. Wenn stattdessen compute() das Array mutiert, können Sie auf seinen Inhalt im exportierten Array zugreifen.

Ändern Sie arr = String(rOTP).split(""); in arr.push.apply(arr, String(rOTP).split(""));, so dass Computer() mutiert anstatt neu zuzuweisen.

Alternativ exportieren einen Getter

Alternativ können Sie einen Getter exportieren, die Sie die Neuzuweisung arr so viel continute können, wie Sie möchten. Dieses Codebeispiel könnte auch mithilfe der ES6-Fettpfeilsyntax geschrieben werden. Ich nehme einfach an, dass Sie auf ES5 beschränkt sind.

exports.getArr = function() { return arr; } 
+0

Ich habe versucht, Ihre Änderungen im Code, aber ich bin immer noch nicht in der Lage, den Wert von "arr" zu bekommen. Dies ist meine Ausgabe: C: \ Benutzer \ Balaje \ Desktop \ Projekt \ Ultro> Knoten Hoh.js a: 10 hoh: 10 in Funktion mes: 10 MES2: –

+0

Wenn ich getArr verwenden, ich bin immer MES2: undefined –

+0

Richtig. Sehen Sie meinen Kommentar zu Ihrer Frage. Versuchen Sie, den Wert auf dem Server zu buchen? Es sieht so aus, als würden Sie einige Zeit nach dem Drücken der Eingabetaste versuchen, auf den Wert vom Client zuzugreifen. – mjohnsonengr

Verwandte Themen