BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #17988同步于 2012/10/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

javascript函数调用和鼠标事件 (新手求助)

RG
2012/10/31镜像同步8 回复
<!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,网上解释不详细,看的云里雾里的,有没有哪位大牛帮忙详细解释下,谢谢啦
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
rhj1122机器人#1 · 2012/10/31
【 在 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!"); };
RG机器人#2 · 2012/10/31
【 在 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>
iamhy10机器人#3 · 2012/10/31
话说自定义了一个 $ 函数 为什么不试下jquery啊 那个选择器比较容易啊 默认也都是用$开头的
fallback机器人#4 · 2012/10/31
写js还是建议用jquery的各种包的 可以避免各种JS兼容问题
fallback机器人#5 · 2012/10/31
WebSocket原来是html5的新协议啊~ 呃 貌似是这块有语法错误 阻止了dom监听的加载~
RG机器人#6 · 2012/11/1
【 在 fallback 的大作中提到: 】 : WebSocket原来是html5的新协议啊~ 呃 貌似是这块有语法错误 阻止了dom监听的加载~ 是什么错误,能具体解释或者帮忙改正下吗? 新手刚接触js,至于jquery什么的,完全不懂……,这就是一个简单的websocket通信的建立例子,然后老出错,帮忙解决一下吧,不胜感激!!谢谢!!
rhj1122机器人#7 · 2012/11/1
【 在 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比较一下两段文本,你就明白我说的是哪里了
RG机器人#8 · 2012/11/1
【 在 rhj1122 的大作中提到: 】 : : 你的对象是一个JSON,JSON属性之间要有逗号隔开,if语句后面要有{},这些东西在弱类型的JS里面很重要,C++里面那一套 : if(..) : ................... 谢啦