/* 2 功能:生成博客目录的JS工具 3 测试:IE8,火狐,google测试通过 6 */ 7 var BlogDirectory = { 8 /* 9 获取元素位置,距浏览器左边界的距离(left)和距浏览器上边界的距离(top) 10 */ 11 getElementPosition:function (ele) { 12 var topPosition = 0; 13 var leftPosition = 0; 14 while (ele){ 15 topPosition += ele.offsetTop; 16 leftPosition += ele.offsetLeft; 17 ele = ele.offsetParent; 18 } 19 return {top:topPosition, left:leftPosition}; 20 }, 21 22 /* 23 获取滚动条当前位置 24 */ 25 getScrollBarPosition:function () { 26 var scrollBarPosition = document.body.scrollTop || document.documentElement.scrollTop; 27 return scrollBarPosition; 28 }, 29 30 /* 31 移动滚动条,finalPos 为目的位置,internal 为移动速度 32 */ 33 moveScrollBar:function(finalpos, interval) { 34 35 //若不支持此方法,则退出 36 if(!window.scrollTo) { 37 return false; 38 } 39 40 //窗体滚动时,禁用鼠标滚轮 41 window.onmousewheel = function(){ 42 return false; 43 }; 44 45 //清除计时 46 if (document.body.movement) { 47 clearTimeout(document.body.movement); 48 } 49 50 var currentpos =BlogDirectory.getScrollBarPosition();//获取滚动条当前位置 51 52 var dist = 0; 53 if (currentpos == finalpos) {//到达预定位置,则解禁鼠标滚轮,并退出 54 window.onmousewheel = function(){ 55 return true; 56 } 57 return true; 58 } 59 if (currentpos < finalpos) {//未到达,则计算下一步所要移动的距离 60 dist = Math.ceil((finalpos - currentpos)/10); 61 currentpos += dist; 62 } 63 if (currentpos > finalpos) { 64 dist = Math.ceil((currentpos - finalpos)/10); 65 currentpos -= dist; 66 } 67 68 var scrTop = BlogDirectory.getScrollBarPosition();//获取滚动条当前位置 69 window.scrollTo(0, currentpos);//移动窗口 70 if(BlogDirectory.getScrollBarPosition() == scrTop)//若已到底部,则解禁鼠标滚轮,并退出 71 { 72 window.onmousewheel = function(){ 73 return true; 74 } 75 return true; 76 } 77 78 //进行下一步移动 79 var repeat = "BlogDirectory.moveScrollBar(" + finalpos + "," + interval + ")"; 80 document.body.movement = setTimeout(repeat, interval); 81 }, 82 83 htmlDecode:function (text){ 84 var temp = document.createElement("div"); 85 temp.innerHTML = text; 86 var output = temp.innerText || temp.textContent; 87 temp = null; 88 return output; 89 }, 90 91 /* 92 创建博客目录, 93 id表示包含博文正文的 div 容器的 id, 94 mt 和 st 分别表示主标题和次级标题的标签名称(如 H2、H3,大写或小写都可以!), 95 interval 表示移动的速度 96 */ 97 createBlogDirectory:function (id, mt, st, interval){ 98 //获取博文正文div容器 99 var elem = document.getElementById(id); 100 if(!elem) return false; 101 //获取div中所有元素结点 102 var nodes = elem.getElementsByTagName("*"); 103 //创建博客目录的div容器 104 var divSideBar = document.createElement('DIV'); 105 divSideBar.className = 'sideBar'; 106 divSideBar.setAttribute('id', 'sideBar'); 107 var divSideBarTab = document.createElement('DIV'); 108 divSideBarTab.setAttribute('id', 'sideBarTab'); 109 divSideBar.appendChild(divSideBarTab); 110 var h2 = document.createElement('H2'); 111 divSideBarTab.appendChild(h2); 112 var txt = document.createTextNode('目录导航'); 113 h2.appendChild(txt); 114 var divSideBarContents = document.createElement('DIV'); 115 divSideBarContents.style.display = 'none'; 116 divSideBarContents.setAttribute('id', 'sideBarContents'); 117 divSideBar.appendChild(divSideBarContents); 118 //创建自定义列表 119 var dlist = document.createElement("dl"); 120 divSideBarContents.appendChild(dlist); 121 var num = 0;//统计找到的mt和st 122 mt = mt.toUpperCase();//转化成大写 123 st = st.toUpperCase();//转化成大写 124 //遍历所有元素结点 125 for(var i=0; i

Web前端——JavaScript练习

Js练习

显示和隐藏,改变display属性(点击查看图片)

关键代码:

e.style.display = "block";
e.style.display = "none";

源码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>显示和隐藏</title>
        <script type="text/javascript">
            function showPicture(){
                //普通方式获得控件实例
                var e = document.getElementById("myimg");
                e.style.display = "block";
            }
            
            function hidePicture(){
                //querySelector是html5增加的
                //id前面得写#,class前面得写
                document.querySelector("#myimg").style.display = "none";
                //标签直接写即可,获取到第一个img标签
                //document.querySelector("img").style.display = "none";
            }
        </script>
    </head>
    <body>
        <a href="javascript:void(0);"onclick="showPicture()">查看图片</a>
        <a href="javascript:void(0);"onclick="hidePicture()">隐藏图片</a>
        <br />
        <img id="myimg" src="http://www.w3school.com.cn/i/eg_mouse.jpg" style="display: none;"  >
    </body>
</html>

querySelector三种方法介绍

鼠标滑动更改内容 onmouseover

关键:
onmouse事件

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script type="text/javascript">
            function moveToBlue(){
                var e = document.querySelector("#btn_blue");
                var e2 = document.querySelector("#btn_green");
                var div = document.querySelector("#content");
                e.style.border = "1px solid #ccc";
                e.style.backgroundColor = "white";
                e2.style.border = "none";
                e2.style.backgroundColor = "none";
                div.style.backgroundColor = "blue";
            }
            function moveToGreen(){
                var e = document.querySelector("#btn_blue");
                var e2 = document.querySelector("#btn_green");
                var div = document.querySelector("#content");
                e2.style.border = "1px solid #ccc";
                e2.style.backgroundColor = "white";
                e.style.border = "none";
                e.style.backgroundColor = "none";
                div.style.backgroundColor = "green";
            }
        </script>
    </head>
    <body>
        <div style="width: 100px;height: 50px;">
            <button id="btn_blue" style="width: 45px;"onmousemove="moveToBlue()">蓝色</button>
            <button id="btn_green" style="width: 45px;"onmousemove="moveToGreen()">绿色</button>
            <div id="content" style="background-color: blue;width: auto;height: 50px;"></div>
        </div>

        <br />
        <img id="myimg" src="http://www.w3school.com.cn/i/eg_mouse.jpg" style="display: none;">
    </body>
</html>

时间自动更新

关键代码:
Js中内置了Date对象

  • getFullYear 年
  • getMonth 月
  • getDate 日
  • getHours 小时
  • getMinutes 分钟
  • getSeconds 秒
  • getDay 星期几(0-6) 星期日为0
方法说明
getFullYear() 从 Date 对象以四位数字返回年份。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
toString() 把 Date 对象转换为字符串。
toTimeString() 把 Date 对象的时间部分转换为字符串。
toDateString() 把 Date 对象的日期部分转换为字符串。
toUTCString() 根据世界时,把 Date 对象转换为字符串。
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。
 var now = new Date();

 var time =now.getFullYear() + '年' + now.getMonth() + '月'
     + now.getDate() + '日'
     +now.getHours() +'时' + now.getMinutes() +'分' + now.getSeconds() + '秒';
  1. setTomeout(fn, 周期:豪秒): 周期只会执行一次
  2. setInterval(fn, 周期:豪秒): 间隔周期一直执行

源码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>时间自动更新</title>
    </head>
    <body>
        <p></p>
        <script type="text/javascript">
            function setTime() {
                var date = new Date();
                var time = date.toTimeString();
                document.querySelector("p").innerText = time;
            }
            setTime();
            //setIime不能加上括号
            // setInterval(setTime, 1000);
            //加括号得得在外层加双引号或者单引号
            setInterval("setTime()", 1000);
        </script>
    </body>
</html>

源码(es拼接字符串):

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>

    </head>
    <body>
        <p></p>
        <script type="text/javascript">
            function setTime() {
                var now = new Date();
                // 通过css的选择符获得html元素
                var timer1 = document.querySelector('p');
                var year = now.getFullYear();
                var month = now.getMonth() + 1;
                var date = now.getDate();
                var hours = now.getHours();
                var minutes = now.getMinutes();
                var seconds = now.getSeconds();
                //es6中模板字符串,拼接
                timer1.innerText = `${year}${month}${date}${hours}${minutes}${seconds}秒`;
            }
            setTime();
            //setIime不能加上括号
            // setInterval(setTime, 1000);
            //加括号得得在外层加双引号或者单引号
            setInterval("setTime()", 1000);
        </script>
    </body>
</html>

表单

关键代码:e.checked=true;

全选和反选的实现

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script type="text/javascript">
            function selectAll() {
                var hobbys = document.getElementsByName("hobby");
                var btn = document.getElementById("checkall");
                //原生for,推荐使用这一种
                /*
                for (var i = 0; i < hobbys.length; i++) {
                    if (btn.checked) {
                        hobbys[i].checked = true;
                    } else {
                        hobbys[i].checked = false;
                    }

                }
                */
                //使用foreach,使用HBuilderX,在内置的浏览器会报错,提示foreach不起作用
                //使用谷歌浏览器打开则没有问题,下面使用lambda也是如此情况,可能是HBuilder的bug
                hobbys.forEach(function(hobby) {
                    //如果全选的是选中,则把全部设置为选中的状态,否则设置为未选中
                    if (btn.checked) {
                        hobby.checked = true;
                    } else {
                        hobby.checked = false;
                    }
                });
                //使用lambda
                /*
                hobbys.forEach((hobby) => {
                    console.log(hobby);
                    if (btn.checked) {
                        hobby.checked = true;
                    } else {
                        hobby.checked = false;
                    }
                });
                */

            }

            function selectRevese() {
                var hobbys = document.getElementsByName("hobby");
                for (var i = 0; i < hobbys.length; i++) {
                    //设置为另外的状态
                    hobbys[i].checked = !hobbys[i].checked;
                }
            }
        </script>
    </head>
    <body>

        <input type="checkbox" name="hobby">读书<br><br>
        <input type="checkbox" name="hobby">电影<br><br>
        <input type="checkbox" name="hobby">游戏<br><br>
        <input type="checkbox" name="hobby">游泳<br><br>
        <input type="checkbox" name="hobby">写代码<br><br>
        <input type="checkbox" id="checkall" onclick="selectAll()">全选 </input>
        <button type="button" onclick="selectRevese()">反选</button>


    </body>
</html>
posted @ 2019-09-19 15:00  我的人生  阅读(368)  评论(0编辑  收藏  举报