zoukankan      html  css  js  c++  java
  • javascript新手实例1-DOM基本操作

    学习javascript好多同学不知道怎么上手,跟着网上的新手教程做了一遍又觉得javascript很简单,但是真正自己用起来又觉得写不出什么东西,我觉得学习最好的方法就是跟着有趣的例子做,所以我们的口号是“每天一例,轻松javascript”

    今天给大家带来第一个例子,简单Dom操作,效果先看下图

    简单Dom操作

    html代码

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>DIV设置样式</title>
            <script src="setDiv.js" type="text/javascript" charset="utf-8"></script>
            <link rel="stylesheet" type="text/css" href="setDiv.css"/>
        </head>
        <body>
            <div id="mainbox">
                <p>请为下面的DIV设置样式:</p>
                <input type="button" name="" id="setButton" value="设置" />
                <div id="setBox"></div>
            </div>
            <div id="shadow"></div>
            <div id="jumpDiv">
                <div class="controlBox">
                    <p>请选择背景颜色</p>
                    <ul>
                        <li style="background: red; color: #fff;">红</li>
                        <li style="background: yellow; color: #fff;">黄</li>
                        <li style="background: blue; color: #fff;">蓝</li>
                    </ul>
                </div>
                <div class="controlBox">
                    <p>请选择宽度</p>
                    <ul>
                        <li>200</li>
                        <li>300</li>
                        <li>400</li>
                    </ul>
                </div>
                <div class="controlBox">
                    <p>请选择高度</p>
                    <ul>
                        <li>400</li>
                        <li>500</li>
                        <li>600</li>
                    </ul>
                </div>
                <div id="controlButton">
                    <input type="button" name="" id="reset" value="恢复" />
                    <input type="button" name="" id="ok" value="确定" />                
                </div>
            </div>
        </body>
    </html>

    css代码

    ul li {
        display: inline;
        list-style-type: none;
    }
    p {
        float: left;
    }
    #mainbox {
         740px;
        height: 420px;
        background: #ccc;
        float: left;
        padding: 10px;
    }
    #mainbox p {
        font-size: 20px;
        font-weight: bold;
        margin: 0;
        line-height: 38px;
    }
    #mainbox input {
        border: none;
        background: #ff0000;
        color: #fff;
         100px;
        height: 40px;
        font-weight: bold;
        cursor: pointer;    
    }
    #setBox {
         100px;
        height: 100px;
        border: 2px solid #000;
        margin: 20px 0;
        background: #fff;
    }
    #shadow {
         100%;
        height: 100%;
        background: #000;
        position: absolute;
        opacity: 0.6;
        z-index: 9;
        display: none;
    }
    #jumpDiv {
         270px;
        height: 170px;
        background: #fff;
        border: 10px solid #999;
        position: absolute;
        padding: 20px 0 0 30px;
        display: none;
        z-index: 99;
        left: 50%;
        top:15%;
        margin: 0 auto;
    }
    .controlBox {
         100%;
        float: left;
    }
    .controlBox p {
         120px;
        margin: 0;
        padding: 6px 0 0 0;
    }
    #jumpDiv ul {
         140px;
        float: left;
        padding: 0;
        margin: 0;
    }
    #jumpDiv ul li {
         30px;
        height: 30px;
        border: 1px solid #999;
        font-size: 10px;
        float: left;
        margin: 5px;
        background: #ddd;;
        line-height: 30px;
        text-align: center;
        cursor: pointer;
        display: block;
    }
    #controlButton {
        text-align: center;
        padding: 5px 0 0 0;
         100%;
        height: 30px;
        float: left;
    }
    #controlButton  input {
         60px;
        height: 30px;
        background: #000080;
        text-align: center;
        color: #fff;
        line-height: 30px;
        border: 1px solid #ccc;
        cursor: pointer;
    }

    javascript代码

    window.onload = function () {
        
        function luka(element) {
            //if (/#/.test(element) == true) 正则也可以匹配,不过正则的效率没有函数高,貌似任何语言都是
            if (element.indexOf('#') > -1) {
                return document.getElementById(element.replace(/#/,''));
            };
            if (element.indexOf('.') > -1) {
                return document.getElementsByClassName(element.replace(/./g,''));
            };
            if (/^[a-zA-Z]+&/.element = true) {
                return document.getElementsByTagName(element);
            };
            console.log(element);
        };
        
        //下面主要是为了偷懒写的循环,不然一个个li去学控制很烦,而且这样能让html看着很清爽,记住写代码就是要怎么偷懒怎么写,这里的偷懒是复用的意思,用最少的功能实现最优的功能
        function liClick() {
            var obj = luka("li");
            //console.log(obj.length);
            for (var i = 0; i < obj.length; i++) {
                obj[i].index = i;
                obj[i].onclick = function() {
                     var numClick = this.index;
                     if (0 <= numClick <= 2) {
                        luka("#setBox").style.backgroundColor = luka("li")[numClick].style.backgroundColor;
                     };
                     if (3 <= numClick <= 5) {
                        luka("#setBox").style.width = luka("li")[numClick].innerHTML+"px";
                     };
                     if (6 <= numClick <= 8) { //等效 numClick == 6 || numClick == 7 || numClick == 8
                        luka("#setBox").style.height = luka("li")[numClick].innerHTML+"px";
                     };
                };
            };
        };
        
        function shadow() {
            luka("#shadow").style.display = "none";
            luka("#jumpDiv").style.display = "none";
        };
        
        luka("#setButton").onclick = function() {
            luka("#shadow").style.display = "block";
            luka("#jumpDiv").style.display = "block";
        };
        
        luka("#reset").onclick = function() {
            luka("#setBox").style.width = "100px";
            luka("#setBox").style.height = "100px";
            luka("#setBox").style.backgroundColor = "#fff";
        };
        
        luka("#ok").onclick = shadow;
        luka("#shadow").onclick = shadow; //点击阴影关闭遮罩和弹出的控制框
        luka("#jumpDiv").onmouseover = liClick; //绑定事件响应的层
        
    }

    知识点

    • document.getElementById or getElementsByClassName or getElementsByTagName 这类操作我们经常要用,反复打,又麻烦,效率又低,所以我们封装一个库,方便之后调用,我写的这个:

      • luka("#id")这种方式就可以调用getElementById
      • luka(".id")调用getElementsByClassName
      • luka("element")调用getElementsByTagName
      • PS:为什么叫luka是因为我喜欢,我爱

    • 不知道大家是不是和我一样,刚开始觉得遮罩很神奇,其实真做了就很简单,遮罩就是加了一个div的半透明层,操作一下控制这个层的display属性就可以简单的实现了

    • 思考:

      • 弹出的层怎么能用鼠标拖动呢?如果你有兴趣,实现了回复我吧

    • 最后求大神指教,求大神优化代码
  • 相关阅读:
    【nodejs原理&源码杂记(8)】Timer模块与基于二叉堆的定时器
    【nodejs原理&源码赏析(7)】【译】Node.js中的事件循环,定时器和process.nextTick
    【nodejs原理&源码赏析(6)】深度剖析cluster模块源码与node.js多进程(下)
    【nodejs原理&源码赏析(5)】net模块与通讯的实现
    【nodejs原理&源码赏析(4)】深度剖析cluster模块源码与node.js多进程(上)
    工作一年多的感慨与总结(二)
    工作一年多的感慨与总结(一)
    动手实践Mybatis插件
    MySQL存储引擎
    Tomcat类加载架构
  • 原文地址:https://www.cnblogs.com/10manongit/p/12207131.html
Copyright © 2011-2022 走看看