黑马程序员技术交流社区

标题: DOM问题 [打印本页]

作者: 徐传任    时间: 2012-9-23 10:57
标题: DOM问题

<head>
    <title>练习</title>
    <script type="text/javascript" >
        function f1() {
            var inputs = document.getElementsByName("input");
            for (var i = 0; i < inputs.length; i++) {
                var input = inputs;
                input.onfocus = f2;
                input.onblur = f3;
            }
        }
        function f2() {
            this.style.background = "red";
        }
        function f3() {
            this.style.background = "white";
        }
    </script>
</head>
<body>
<input type="text"  /><br />
<input type="text" /><br />
<input type="text" /><br />
<input type="text" /><br />
<input type="text" /><br />
</body>

麻烦给看看哪里错了,新手不大懂


作者: 彭书雄    时间: 2012-9-23 12:21
标题: input=inputs[i] 下面那么打错了,注意一下
本帖最后由 彭书雄 于 2012-9-26 21:23 编辑

初步看了一下 有两个错误
1.赋值input    应该是input=inputs
2.获取元素集合的方法错误
inputs = document.getElementsByTagName(''input);
3.你这段代码 没有调用
在开头处调用f1  函数即可
  1. window.onload=function()
  2. {
  3.     f1();
  4. }
复制代码
其实想给相同表单添加同样一个方法可以使用委托  直接在整个添加一个父级 div 标签  然后通过给div 添加 焦点事件  子标签即可获得焦点事件,既然是新手,以后会学到,一点点来,猥琐这里只是提一下,有新区可以研究一下 {:soso_e130:}

作者: 明光照    时间: 2012-9-25 09:07
不对啊。  var inputs = document.getElementsByName("input");input不是这个文本框的名字啊。文本框没有定义名字啊。这是怎么回事啊。难道可以这样用吗
作者: 李后量    时间: 2012-9-25 12:06
如楼上所说,var inputs = document.getElementsByName("input")这句有问题吧,试试改成getElementsByTagName,应该是根据标签来找元素数组吧。
而且下面那个循环里面是不是应该改成var input = inputs[i] 呢?试试吧




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2