返回信息流<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset = "utf-8"/>
<title>Chat by Web Sockets</title>
<script type='text/javascript'>
function $() {
return document.getElementById(arguments[0]);
}
function disp_alert(){
alert("我是警告框!!");
}
</script>
</head>
<body>
<div id='messageBox'></div>
<div id='input'>
<div>
<input id='connect' type='submit' value='Connect' />
</div>
</div>
<script type='text/javascript'>
alert("alert test1");
$('connect').onclick =function(event) {
alert("connection confirmed!");
};
</script>
</body>
</html>
上面程序,请问红色部分能这么调用吗?为什么不会弹出警告框?
另外,如果不用函数,怎么实现onclick?
本人新手初学javascript,网上解释不详细,看的云里雾里的,有没有哪位大牛帮忙详细解释下,谢谢啦
这是一条镜像帖。来源:北邮人论坛 / www-technology / #17988同步于 2012/10/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
javascript函数调用和鼠标事件 (新手求助)
RG
2012/10/31镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
【 在 RG 的大作中提到: 】
: <!DOCTYPE HTML>
: <html lang="en">
: <head>
: ...................
按理来说是合法的,我这里各浏览器都能跑啊。
你说不用函数,事件绑定三种模式:HTML、DOM0级和DOM2级,你上面用的是DOM0级,可以直接在HTML节点上绑定也可以用addEventListener(IE下attachEvent),但是都要有事件回调的句柄啊,不用函数是什么意思。。。。?
function $(){
return document.getElementById(arguments[0]);
}
实际上是类似于迷你框架的写法,就是偷懒。上面那段红色代码写明白了就是:
document.getElementById('connect').onclick = function(event){
alert("connection confirmed!");
};
【 在 rhj1122 的大作中提到: 】
:
: 按理来说是合法的,我这里各浏览器都能跑啊。
:
谢谢啦,能帮忙再看一下吗?下面是完整的程序,为什么加上蓝色的部分之后,红色的语句(为了找出问题自己加的)就不会执行了?
谢谢哈
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset = "utf-8"/>
<title>Chat by Web Sockets</title>
<script type='text/javascript'>
if (!window.WebSocket)
alert("window.WebSocket unsuport!");
function $() {
return document.getElementById(arguments[0]);
}
function $F() {
return document.getElementById(arguments[0]).value;
}
function getKeyCode(ev) {
if (window.event)
return window.event.keyCode;
return ev.keyCode;
}
function disp_alert(){
alert("Button works well!!");
}
var server = {
connect : function() {
var location ="ws://localhost:8888/servlet/a";
this._ws =new WebSocket(location); //创建到目标地址的socket
//alert("Dest found!");
this._ws.onopen =this._onopen; //打开socket
//alert("Socket Open!");
this._ws.onmessage =this._onmessage;
this._ws.onclose =this._onclose; //关闭socket*/
}
_onopen : function() {
server._send('send to server : websockets are open for communications!');
alert("socket1 Open!");
}
_send : function(message) {
if (this._ws)
this._ws.send(message);
//alert("Message sended!");
}
send : function(text) {
if (text !=null&& text.length >0)
//server._send(text);
}
_onmessage : function(m) {
if (m.data) {
var messageBox = $('messageBox');
var spanText = document.createElement('span');
spanText.className ='text';
spanText.innerHTML = m.data;
var lineBreak = document.createElement('br');
messageBox.appendChild(spanText);
messageBox.appendChild(lineBreak);
messageBox.scrollTop = messageBox.scrollHeight
- messageBox.clientHeight;
}
}
_onclose : function(m) {
this._ws =null;
//alert("socket closed!");
}
}
</script>
</head>
<body>
<div id='messageBox'></div>
<div id='input'>
<div>
<input id='connect' type='submit' value='Connect' />
</div>
</div>
<script type='text/javascript'>
alert("alert test1");
$('connect').onclick =function(event) {
disp_alert();
server.connect();
return false;
};
</script>
<p>
JAVA Jetty for WebSocket
</p>
</body>
</html>
【 在 fallback 的大作中提到: 】
: WebSocket原来是html5的新协议啊~ 呃 貌似是这块有语法错误 阻止了dom监听的加载~
是什么错误,能具体解释或者帮忙改正下吗?
新手刚接触js,至于jquery什么的,完全不懂……,这就是一个简单的websocket通信的建立例子,然后老出错,帮忙解决一下吧,不胜感激!!谢谢!!
【 在 RG 的大作中提到: 】
: 谢谢啦,能帮忙再看一下吗?下面是完整的程序,为什么加上蓝色的部分之后,红色的语句(为了找出问题自己加的)就不会执行了?
: 谢谢哈
: <!DOCTYPE HTML>
: ...................
你的对象是一个JSON,JSON属性之间要有逗号隔开,if语句后面要有{},这些东西在弱类型的JS里面很重要,C++里面那一套
if(..)
...;
见到就很蛋疼。
你的符号没写对,报错了,所以就不执行。
不知道你是用什么开发的,新手用DW可以很直观,另外调试用FireFox,firebug插件很好用,当其他浏览器也有对应的调试工具。
以下是改过的程序:
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset = "utf-8"/>
<title>Chat by Web Sockets</title>
<script type='text/javascript'>
if (!window.WebSocket)
alert("window.WebSocket unsuport!");
function $() {
return document.getElementById(arguments[0]);
}
function $F() {
return document.getElementById(arguments[0]).value;
}
function getKeyCode(ev) {
if (window.event)
return window.event.keyCode;
return ev.keyCode;
}
function disp_alert(){
alert("Button works well!!");
}
var server = {
connect : function() {
var location ="ws://localhost:8888/servlet/a";
this._ws =new WebSocket(location); //创建到目标地址的socket
//alert("Dest found!");
this._ws.onopen =this._onopen; //打开socket
//alert("Socket Open!");
this._ws.onmessage =this._onmessage;
this._ws.onclose =this._onclose; //关闭socket*/
},
_onopen : function() {
server._send('send to server : websockets are open for communications!');
alert("socket1 Open!");
},
_send : function(message) {
if (this._ws)
this._ws.send(message);
//alert("Message sended!");
},
send : function(text) {
if (text !=null&& text.length >0){
//server._send(text);
}
},
_onmessage : function(m) {
if (m.data) {
var messageBox = $('messageBox');
var spanText = document.createElement('span');
spanText.className ='text';
spanText.innerHTML = m.data;
var lineBreak = document.createElement('br');
messageBox.appendChild(spanText);
messageBox.appendChild(lineBreak);
messageBox.scrollTop = messageBox.scrollHeight
- messageBox.clientHeight;
}
},
_onclose : function(m) {
this._ws =null;
//alert("socket closed!");
}
}
</script>
</head>
<body>
<div id='messageBox'></div>
<div id='input'>
<div>
<input id='connect' type='submit' value='Connect' />
</div>
</div>
<script type='text/javascript'>
alert("alert test1");
$('connect').onclick =function(event) {
disp_alert();
server.connect();
return false;
};
</script>
<p>
JAVA Jetty for WebSocket
</p>
</body>
</html>
看不清楚的话你用beyondcompare比较一下两段文本,你就明白我说的是哪里了
【 在 rhj1122 的大作中提到: 】
:
: 你的对象是一个JSON,JSON属性之间要有逗号隔开,if语句后面要有{},这些东西在弱类型的JS里面很重要,C++里面那一套
: if(..)
: ...................
谢啦