要点:在JS中 访问/调用 某个属性/方法时,一定要清楚当前对象是谁(this == window?) ,它有那些既有属性/方法?
尽量都使用类似于 xxxObj.yyyAttr 这样的方式访问(即使用.操作符), 而不要直接使用。
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
- <html xmlns="">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title>气4人的JS错误</title>
- <script type="text/javascript">
- function select(idx){
- alert(idx);
- }
- function XXX(){
- alert("XXX");
- }
- </script>
- </head>
- <body>
- <p>哎,JS经验太少啊,怒了。同事写的类似的JS代码,预期的select方法没调用起来,
- 怎么想不出哪里出错,费了半个点。直到写了类似XXX方法之后才恍然。
- select 是单选框HTML元素的一个自己的内置方法啊,在onchange这样的内联JS代码中,
- this对象是该单选框,而不是window对象。
- 以前,碰到同事重复声明已有属性的,这次又碰到无意覆盖已有方法的,写个献丑的笔记吧。
- </p>
- <form action="#">
- <div><input type="radio" name="r" onchange="select(1);XXX();" value="AAA" /> AAA(错误)</div>
- <div><input type="radio" name="r" onchange="select(2);XXX();" value="BBB" /> BBB(错误)</div>
- <div><input type="radio" name="r" onchange="select(3);XXX();" value="CCC" /> CCC(错误)</div>
- <div><input type="radio" name="r" onchange="window.select(4);XXX();" value="DDD" /> DDD(正确)</div>
- </form>
- </body>
- </html>
阅读(818) | 评论(0) | 转发(0) |