A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李后量 中级黑马   /  2012-9-15 18:03  /  2767 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李后量 于 2012-9-16 16:24 编辑

先上代码:
  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3.     <title>getElementByTagName</title>
  4.         <script type="text/javascript">
  5.             function initEvent() {
  6.                 var inputs = document.getElementsByTagName("input");
  7.                 for (var i = 0; i < inputs.length; i++) {
  8.                     var input = inputs[i];
  9.                     input.onClick = btnClick;
  10.                 }
  11.             }
  12.             function btnClick() {
  13.                 var inputs = document.getElementsByTagName("input");
  14.                 for (var i = 0; i < inputs.length; i++) {
  15.                     var input = inputs[i];
  16.                     if (input == window.event.srcElement) {
  17.                         input.value = "呜呜";
  18.                     }
  19.                     else {
  20.                         input.value = "哈哈";
  21.                     }
  22.                 }
  23.             }
  24.         </script>
  25. </head>
  26. <body onload="initEvent()">
  27.     <input type="button" value="哈哈"/>
  28.     <input type="button" value="哈哈"/>
  29.     <input type="button" value="哈哈"/>
  30.     <input type="button" value="哈哈"/>
  31.     <input type="button" value="哈哈"/>
  32.     <input type="button" value="哈哈"/>
  33. </body>
  34. </html>
复制代码
如果不是我的代码输入有问题的话(但我看了好多遍都觉得没什么错啊),应该会像视频里面那样,单击各个按钮时被点击的那个按钮的value会变成“呜呜”,但我运行的时候却怎么点都没有反应,调试的时候发现在页面加载的时候的确调用了initEvent方法,但当单击的时候却没有调用到onClick方法,这是为什么呢?求解释~~~~~~~

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

11 个回复

倒序浏览
你是用的document.getElementsByTagName ,但是你的按钮少了个Name属性,怎么会成功?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
我看了n遍你的代码,和我写的一模一样呢,,我的能出来的,代码应该没错的啊,你重新启动VS,在调试一下,看看对吗?
回复 使用道具 举报
维纳斯之叶 发表于 2012-9-15 21:31
我看了n遍你的代码,和我写的一模一样呢,,我的能出来的,代码应该没错的啊,你重新启动VS,在调试一下, ...

我也觉得代码没问题啊,但就是运行不成功,重启了VS还是不行,点击了按钮之后没反应
回复 使用道具 举报
张青江 发表于 2012-9-15 18:10
你是用的document.getElementsByTagName ,但是你的按钮少了个Name属性,怎么会成功? ...

getElementsByTagName貌似是通过标签来获取对象而不是通过name来获取对象吧
回复 使用道具 举报
还真没看出错,你把js代码换成这个试试
<script type="text/javascript">
        function iniEvent() {
            var inputs = document.getElementsByTagName("input");
            for (var i = 0; i < inputs.length; i++) {
                var input = inputs[i];
                input.onclick = btnClick;
            }
        }
        function btnClick() {
            var inputs = document.getElementsByTagName("input");
            for (var i = 0; i < inputs.length; i++) {
                var input = inputs[i];
                if (input == window.event.srcElement) {
                    input.value = "呜呜";
                }
            }
        }
</script>

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
(⊙o⊙)…,原来就是一个字母大小写的问题
09.                    input.onClick = btnClick;onclick应该是小写,C不应该大写~~~~,,细节决定成败啊~~~~

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
维纳斯之叶 发表于 2012-9-16 15:56
(⊙o⊙)…,原来就是一个字母大小写的问题
09.                    input.onClick = btnClick;onclick应该 ...

我一开始的时候就改了啊,但还是不行,你的行了??那为什么我的不行呢
回复 使用道具 举报
维纳斯之叶 发表于 2012-9-16 15:56
(⊙o⊙)…,原来就是一个字母大小写的问题
09.                    input.onClick = btnClick;onclick应该 ...

刚才又试了一次,结果就OK了,奇怪哦,难道我一开始的时候写错了??不过这倒是给我一次深刻的印象哦,谢谢~~谢谢~~~
回复 使用道具 举报
你的onclick写成onClick了。。。。
回复 使用道具 举报
李后量 发表于 2012-9-16 16:23
刚才又试了一次,结果就OK了,奇怪哦,难道我一开始的时候写错了??不过这倒是给我一次深刻的印象哦,谢 ...

共勉共勉啊~~~嘿嘿
回复 使用道具 举报
最好把 input.onclick = btnClick;给为input.setAttribute("onclick", btnClick);
因为上面那个是旧的规范好多浏览器可能对它的支持不好才会造成灵异事件

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马