我需要从单独文件中的html onclick访问另一个函数中的一个函数,我认为因为这是另一个函数,所以为什么它返回未定义状态,所以我可以访问嵌套在索引文件中的函数但我需要的我不能。该函数在我的套接字函数中,因为它使用了它的ID。
我尝试访问的功能采用以下格式:
io.of('/main').on('connection', function (socket) {
socket.on('chat message', function (msg) {
function oneCall() {
我正在尝试访问的是此oneCall函数。当我调用此套接字范围之外的函数时,它可以正常工作,但是我需要在套接字内使用该函数吗?
谢谢。
答案 0 :(得分:1)
您可能想查找功能范围。如果您的功能仅存在于另一个功能之内,那么您将无法访问另一个功能范围之外的功能
示例:
function exampleFunction() {
function otherFunction() {
//do something
}
otherFunction();
}
从这个非常小的示例中,我们构造一个函数并在另一个函数中调用该函数。现在,如果您尝试在 exampleFunction 范围之外调用 otherFunction ,则它将不起作用,因为它在 exampleFunction 范围之外。 otherFunction 仅存在于 exampleFunction 的范围内。
现在,如果您在其他函数的范围之外声明了该函数,则可以在页面上的任意位置访问该函数。
示例:
function exampleFunction() {
otherFunction();
}
function otherFunction() {
//do something
}
这些功能现在可以独立运行,并且otherFunction可以在任何需要的地方使用。 您可以选择在 exampleFunction 中调用 otherFunction ,这将在每次调用 exampleFunction 时执行 otherFunction 。>
如果您想在 onclick 功能中使用 otherFunction ,那么您现在就可以这样做,因为它是独立的并且存在于 global范围内< / em>。
示例:
<button onclick="otherFunction();">Click me!</button>
就您最近的评论而言,关于在函数 oneCall 中访问特定值(在您的情况下为套接字ID),您可以选择将值解析为函数的参数。
示例:
function oneCall(socketID) {
//do something
}
函数 onceCall 中的参数 socketID 现在可以用作任何JavaScript变量,您可以使用它执行所需的任何逻辑。
然后将套接字ID值解析为函数,您可以执行以下操作:
onecall(variable_containing_socket_id);
您当然也可以在一个函数中声明多个参数。
示例:
function oneCall(socketID, anotherParameter, andAnotherOne) {
//do something
}
onecall(socket_id, value, anotherValue);
W3Schools提供的有关函数参数here的简单信息。