03-DOM操作练习:基础练习

DOM操作练习

举例1:点击按钮时,显示和隐藏盒子。

代码实现:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        button {
            margin: 10px;
        }

        div {
            width: 200px;
            height: 200px;
            background-color: pink;
        }

        .show {
            display: block;
        }

        .hide {
            display: none;
        }
    </style>

</head>
<body>
<button id="btn">隐藏</button>
<div>
    生命壹号
</div>

<script>
    //需求:点击button,隐藏盒子。改变文字,在点击按钮,显示出来。
    //步骤:
    //1.获取事件源和相关元素
    //2.绑定事件
    //3.书写事件驱动程序

    //1.获取事件源和相关元素
    var btn = document.getElementById("btn");
    var div1 = document.getElementsByTagName("div")[0];
    //2.绑定事件
    btn.onclick = function () {
        //3.书写事件驱动程序
        //判断btn的innerHTML属性值,如果为隐藏就隐藏盒子,并修改按钮内容为显示。
        //反之,则显示,并修改按钮内容为隐藏
        if (this.innerHTML === "隐藏") {
            div1.className = "hide";
            //修改按钮上的文字(innerHTML)
            btn.innerHTML = "显示";
        } else {
            div1.className = "show";
            //修改按钮上的文字(innerHTML)
            btn.innerHTML = "隐藏";
        }
    }

</script>

</body>
</html>

代码解释:

当盒子是显示状态时,就设置为隐藏;当盒子是隐藏状态时,就设置为显示。注意这里的逻辑判断。

另外,这里用到了innerHTHL属性,它可以修改按钮上显示的文字。

代码最终显示的效果如下:

20180127_1518.gif

举例2:美女相册

这里推荐一个网站:

好处是:素材做出来之前,先留出空位,方便以后换图。比如http://via.placeholder.com/400x300arrow-up-right这个链接可以生成400*300的占位图片。

需求:

  • (1)点击小图片,改变下面的大图片的src属性值,让其赋值为a链接中的href属性值。

  • (2)让p标签的innnerHTML属性值,变成a标签的title属性值。

为了实现美女相册,代码如下:

代码解释:

(1)获取事件源:我们通过ul.getElementsByTagName("a")来获取ul里面的a元素。

(2)绑定事件:因为要绑定一个数组,所以这里用for循环来绑定

(3)【重要】书写事件驱动程序:这里是用img.src = this.href,而不是用img.src = aArr[i].href。因为this指的是函数的调用者。如果写成后者,等i变成了4,就会一直是4。显然不能达到效果。

(4)代码的最后一行:return false表示:阻止继续执行下面的代码。

实现的效果如下:

20180127_1630.gif

工程文件:

举例3:鼠标悬停时,显示二维码大图

实现效果:

20180127_1800.gif

表单元素的属性

表单元素的属性包括:type、value、checked、selected、disabled等。

举例1:禁用文本框/解禁文本框

当文本框被禁用之后,文本框只读,不能编辑,光标点不进去。

上方代码可以看到,禁用文本框的代码是:

我们的目的时让disabled这个属性出现,即可禁用。所以,属性值里可以写数字,可以写任意一个字符串,但不能写0,不能写false,不能为空。一般我们写no。

解禁文本框的代码是:

我们的目的是删除disabled属性,即可解禁。属性值可以是false,可以是0。但我们一般采用方式2进行解禁。

实现效果:

举例2:文本框获取焦点/失去焦点

细心的读者会发现,京东和淘宝的搜索框,获取焦点时,提示文字的体验是不同的。

京东:

20180127_2000.gif

淘宝:

20180127_2005.gif

其实,淘宝的提示文字,是用一个绝对定位的单独的标签来做的

京东是判断输入框是否获取焦点;淘宝是判断输入框内是否有用户输入的文字。

我们现在来实现一下。代码如下:

实现效果如下:

20180127_2010.gif

如上方所示,我们还可以用placeholder来做,但是IE678并不支持,所以不建议使用。

举例3:用户注册信息错误时,输入框失去焦点后,高亮显示。

代码实现:

代码解释:这次我们是在标签内调用function的,此时是先通过window调用的function。所以行内调用的时候要带this。

实现效果:

20180127_2035.gif

举例4:全选和反选

对应的代码如下:

注意代码中的注释,需求2是比较难的地方,这里用到了两次for循环。第一次for循环是因为,要给每个input都要进行绑定事件。

实现的效果如下:

20180127_2320.gif

Last updated