我有一个调用javascript函数的html文件,可以从用户那里获得一个6位数的输入。
<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>
这是定义函数的ho.js javascript文件。
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);
}
是否可以将javascript函数的返回值(本例中为“arr”)导出到节点js exports函数,类似于全局变量a = 10。这是我通过浏览器获取“arr”值后调用的主节点文件。
hoh.js
var call = require("./ho");
console.log("hoh:" +call.r);
call.fun();
这是我运行hoh.js时得到的输出:
C:\Users\Balajee\Desktop\project\Ultro>node hoh.js
a:10
hoh:10
in function
mes:10
mes2:undefined
答案 0 :(得分:0)
exports.arr = arr;
将导出数组。但是数组会在计算中重新分配。如果相反,compute()会改变数组,您将能够在导出的数组中访问其内容。
将arr = String(rOTP).split("");
更改为arr.push.apply(arr, String(rOTP).split(""));
,以便计算机()改变而不是重新分配它。
或者,导出一个getter
或者,您可以导出一个getter,它允许您根据需要继续重新分配arr。此代码示例也可以使用ES6胖箭头语法编写;我只是假设你仅限于ES5。
exports.getArr = function() { return arr; }