Javascript HTML onclick-如何访问函数

Javascript HTML onclick-如何访问函数,javascript,html,sockets,socket.io,Javascript,Html,Sockets,Socket.io,我需要访问另一个函数中的函数,因为它在另一个函数中,这就是为什么它返回为未定义的,我可以访问没有嵌套在索引文件中但我需要的函数,我不能。该函数在我的套接字函数中,因为它使用它的ID 我尝试访问的函数的格式如下: io.of('/main').on('connection', function (socket) { socket.on('chat message', function (msg) { function oneCall() { 这是我试图访问的oneCall

我需要访问另一个函数中的函数,因为它在另一个函数中,这就是为什么它返回为未定义的,我可以访问没有嵌套在索引文件中但我需要的函数,我不能。该函数在我的套接字函数中,因为它使用它的ID

我尝试访问的函数的格式如下:

io.of('/main').on('connection', function (socket) {

    socket.on('chat message', function (msg) {

     function oneCall() {
这是我试图访问的oneCall functon。当我调用这个套接字范围之外的函数时,它可以正常工作,但是我需要套接字中的函数吗

谢谢。

您可能需要查找函数范围。如果您的函数仅存在于另一个函数中,则无法在另一个函数的作用域之外访问该函数

例如:

function exampleFunction() {
    function otherFunction() {
        //do something
    }

    otherFunction();
}
function exampleFunction() {    
    otherFunction();
}

function otherFunction() {
    //do something
}
function oneCall(socketID) {
    //do something
}
function oneCall(socketID, anotherParameter, andAnotherOne) {
    //do something
}
从这个非常简单的例子中,我们构造一个函数并在另一个函数中调用该函数。现在,如果您尝试在exampleFunction范围之外调用otherFunction,它将不起作用,因为它在exampleFunction范围之外。otherFunction仅存在于exampleFunction的范围内

现在,如果您在另一个函数的作用域之外声明了您的函数,那么您可以在页面上的任意位置访问该函数

例如:

function exampleFunction() {
    function otherFunction() {
        //do something
    }

    otherFunction();
}
function exampleFunction() {    
    otherFunction();
}

function otherFunction() {
    //do something
}
function oneCall(socketID) {
    //do something
}
function oneCall(socketID, anotherParameter, andAnotherOne) {
    //do something
}
这些函数现在独立工作,其他函数可以在您希望的任何地方使用。 您可以选择在exampleFunction中调用otherFunction,它将在每次调用exampleFunction时执行otherFunction

如果您希望在onclick功能中使用otherFunction,那么现在就可以这样做,因为它是独立的,并且存在于全局范围内

例如:

function exampleFunction() {
    function otherFunction() {
        //do something
    }

    otherFunction();
}
function exampleFunction() {    
    otherFunction();
}

function otherFunction() {
    //do something
}
function oneCall(socketID) {
    //do something
}
function oneCall(socketID, anotherParameter, andAnotherOne) {
    //do something
}
点击我

根据您最近关于访问函数oneCall中的特定值(本例中为套接字id)的评论,您可以选择将该值解析为函数的参数

例如:

function exampleFunction() {
    function otherFunction() {
        //do something
    }

    otherFunction();
}
function exampleFunction() {    
    otherFunction();
}

function otherFunction() {
    //do something
}
function oneCall(socketID) {
    //do something
}
function oneCall(socketID, anotherParameter, andAnotherOne) {
    //do something
}
onceCall函数中的参数socketID现在可以作为任何JavaScript变量使用,您可以使用它执行任何逻辑

要将套接字ID值解析到函数中,可以执行以下操作:

onecall(包含\u套接字\u id的变量\u)

当然,您也可以在函数中声明多个参数

例如:

function exampleFunction() {
    function otherFunction() {
        //do something
    }

    otherFunction();
}
function exampleFunction() {    
    otherFunction();
}

function otherFunction() {
    //do something
}
function oneCall(socketID) {
    //do something
}
function oneCall(socketID, anotherParameter, andAnotherOne) {
    //do something
}
onecall(套接字id、值、另一个值)


W3提供的有关函数参数的简单信息。

您需要了解函数作用域是如何工作的。我建议你查一下这个话题。如果一个函数只存在于另一个函数中,则不能在该范围之外访问它。但是,如果函数在其他函数范围之外声明,则它是一个简单的
onclick
属性,带有要调用的函数的名称<代码>点击我io.of
函数中那样将其作为参数进行解析
oneCall(socketID)
。试着看看我下面的回答是否让您对这方面的更新更清楚。你把它用到工作中了吗?谢谢马丁,我刚刚开始工作——休息的时候我会回来读的,非常感谢。