有人可以解释这三个函数是如何相互关联的吗?$函数在这里做了什么?它有两个定义吗?
socket.onopen = function(){
log("Welcome - status "+this.readyState);
};
function $(id){
return document.getElementById(id);
}
function log(msg){
$("log").innerHTML+="<br>"+msg;
}
这些函数编写如下客户端代码:
var socket;
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(); } }
答案 0 :(得分:4)
第一个函数调用第三个函数。第三个函数调用第二个函数。他们之间没有其他关系。
$
字符在变量名中没有特殊含义。您可以改用foo
或getEl
。
$
只是一个特别难以理解的名称,它已成为获取元素的函数的流行,因为它是(a)短而(b)是在其他一些语言中用来表示变量开头的字符。
答案 1 :(得分:2)
它声明了一个名为$
的函数,它接受一个id-string并返回
documet.getEelementById(id);
简单。
答案 2 :(得分:1)
第一个函数是一个事件处理程序。只要对象socket
触发open
事件,JavaScript就会调用socket.onopen
中定义的函数。此函数将调用下面定义的另一个名为log
的函数。
第二个函数为document.getElementById()
创建简写。由于$
字符可以用作JavaScript中的常规标识符,因此它可以成为缩短常用功能的便捷工具。需要注意的是,几个常见的js库将这个符号用于关键函数,因此您可能应该在自定义代码中避免这种情况。
log
函数使用简写选择要通过连接接收消息文本的元素。无论文本是什么,都会添加消息文本。
答案 3 :(得分: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;
}