-3

有人可以解释这三个函数是如何相互关联的吗? $ 在这里做什么?它有两个定义吗?

socket.onopen = function(){
    log("Welcome - status "+this.readyState); 
};

function $(id){ 
   return document.getElementById(id); 
}

function log(msg){ 
    $("log").innerHTML+="<br>"+msg; 
}

这些函数写在下面的客户端代码中:

变种套接字;

function init() {
    var host = "ws://localhost:12345/websocket/server.php";
    try {
        socket = new WebSocket(host);
        log('WebSocket - status ' + socket.readyState);
        socket.onopen = function (msg) {
            log("Welcome - status " + this.readyState);
        };
        socket.onmessage = function (msg) {
            log("Received: " + msg.data);
        };
        socket.onclose = function (msg) {
            log("Disconnected - status " + this.readyState);
        };
    } catch (ex) {
        log(ex);
    }
    $("msg").focus();
}

function send() {
    var txt, msg;
    txt = $("msg");
    msg = txt.value;
    if (!msg) {
        alert("Message can not be empty");
        return;
    }
    txt.value = "";
    txt.focus();
    try {
        socket.send(msg);
        log('Sent: ' + msg);
    } catch (ex) {
        log(ex);
    }
}

function quit() {
    log("Goodbye!");
    socket.close();
    socket = null;
} // Utilities  function $(id){ return document.getElementById(id); }  function log(msg){ $("log").innerHTML+="<br>"+msg; }  function onkey(event){ if(event.keyCode==13){ send(); } }
4

4 回答 4

4

第一个函数调用第三个函数。第三个函数调用第二个函数。他们之间没有其他关系。

$字符在变量名中没有特殊含义。您可以使用fooorgetEl代替。

$只是一个特别不具信息性的名称,它在获取元素的函数中变得流行,因为它 (a) 很短,并且 (b) 是在某些其他语言中用于指示变量开始的字符。

于 2013-02-27T06:53:04.057 回答
2

它声明了一个名为的函数$,它接受一个 id 字符串并返回

documet.getEelementById(id);

简单的。

于 2013-02-27T06:52:53.463 回答
1

第一个函数是事件处理程序。每当对象socket触发open事件时,JavaScript 都会调用socket.onopen. 该函数将调用log下面定义的另一个函数。

第二个函数为document.getElementById(). 由于$字符可以用作 JavaScript 中的常规标识符,因此它可以成为缩短常用函数的便捷工具。这里需要注意的是,几个常见的 js 库使用该符号来表示关键功能,因此您应该在自定义代码中避免这种情况。

log函数使用速记选择一个元素以通过连接接收消息的文本。无论文本已经存在,都会将消息文本添加到其中。

于 2013-02-27T07:03:36.070 回答
0

重写:

// Binds an anonymous function to the open event of the 
// object named socket. The handler function prints a
// status message in the log panel by invoking the 
// function defined below named log.

socket.onopen = function () {
    log("Welcome - status " + this.readyState); 
};

// Function named $ that returns the DOM element
// whose id attribute equals id.

function $(id) { 
    return document.getElementById(id); 
}

// Function named log that invokes the function named $.
//
// This function finds the DOM element whose id equals
// "log" and appends a line break and a message to its
// inner content.

function log(msg) { 
    $("log").innerHTML += "<br>" + msg; 
}
于 2013-02-27T06:58:43.003 回答