前端学习:javascript进阶

知识点

复习

html
    标签,块级 行内

css
    position
    background
    text-align
    margin
    padding
    font-size
    z-index
    over-flow
    :hover
    opacity
    float(clear:both)
    line-height
    border
    color
    display

    补充:页面布局
    主站布局
        <div class="pg-header"></div>
            <style>width:980px; margin:0 auto /*内容自动居中*/</style>
        <div class="pg-body"></div>
        <div class="pg-footer"></div>

    后台管理布局
        position
            fixed  窗口定位,永远固定在窗口某个位置
            relative 单独无意义
            absolute 页面定位,第一次定位在指定页面位置,滚轮滚动则改变
        1.左侧菜单跟随滚动条 fixed
        2.左侧菜单固定不动  absolute

javascript
    for循环
        for(var item in [11, 22, 33]){
            console.log(item)  //输出索引
        }

        var arr = [11, 22, 33, 44]
        for(var i = 0; i < arr.length; i = i + 1){
            break;
        }
        while(条件){

        }

    条件语句
        if(){
        }
        else if{
        }
        else{
        }

        ==
        ===
        swich(name){
            case "1":
                console.log("1");
                break;
            case "2":
                console.log("2");
                break;
            default :
                console.log("default");
        }

    函数:
        function func(arg){
            return arg+1;
        }
        var result = func(1);
        console.log(result);

    普通函数:
        function func(){
        }
    匿名函数:
        setInterval("func()", 5000);
        setInterval(function(){
            console.log("123");
            }, 5000)
    自执行函数:
        function func(){
        }

        func()

        //解释到这里就会自动执行
        (function(arg){
            console.log(arg);
        })(1)

    序列化操作
        JSON.stringify(obj)  // 将对象转换为字符串
        JSON.parse(str)  // 将字符串转为对象
    转义
        客户端(cookie) -》 服务器端
        将数据进过转义后,保存在cookie中
        decodeURI()
        encodeURI()

    eval
        python
            val = eval(表达式)
                    exec(执行代码)
        javascript
            eval两者集合
    时间
        Date类
            var d = new Date()
            d.getxxx() 获取
            d.setxxx() 设置
    作用域
        其他语言(c#):以代码块作为作用域
        public void func(){
            if(1 == 1){
                string name = "java";
            }
            console.writeline(name); //报错
        }

        python:以函数作为作用域
            def func():
                if(1==1):
                    name = "alex"
                print(name) //正常输出
            func()
            print(name) //报错

        javascript:
            1.以函数作为作用域
            function func(){
                if(1==1){
                    var name = "alex";
                 }
                 console.log(name);
            }
            2.函数的作用域,在函数未被调用之前,已经被创建
            3.函数的作用域存在作用域链,调用前被创建
            例如:
            xo = "eric";
            function func() {
                xo = "alex";
                function foo() {
                    console.log(xo)
                }
                xo = "tony";
                return foo;
            }
            var ret = func()
            ret()
            4.函数内局部变量提前申明
    面向对象
    function foo(){
        var xo = "alex";
    }

    foo()

    function Foo(n){
        this.name = n;  // 属性
        this.sayName = function(){
            console.log(this.name);
        }  // 方法
    }

    var obj = new Foo("we");
    obj.name
    obj.sayName()

    this 指代对象(python self)
    创建对象,new 函数()

    原型:
    function Foo(n){
        this.name = n;
    }

    # Foo原型  字典
    Foo.prototype = {
        “sayName": function(){
            console.log(this.name)
        }
    }

DOM 文档对象模型
    查找
        直接查找
            var obj = document.getElementById("li");

        间接查找
            文件内容操作
            innerText 仅文本
            innerHTML 全部内容

            value
                input value 获取当前标签中的值
                select value 获取选中的value值(selectedIndex)
                textarea value获取当前标签中的值
            搜索框示例
    样式操作
        className
        classList
            classList.add
            classList.remove
        obj.style.fontSize="16px";
        obj.style.backgroundColor="red";

    属性操作
        attributes
        setAttribute
        removeAttribute

    创建标签,添加到html中
        1.字符串
        2.对象 document.createElement("div")

    提交表单
        任何标签都可以,通过dom提交表单
        document.getElementById("id").submit();

    其他
        console.log()  输出框
        alert()        弹出框
        var ret = confirm() 确认框 true/false
    url和刷新
        location.href  获取url
        location.href= "url" 设置url,重定向
        location.reload() 重新加载 相当于 location.href = location.href
    定时器
        var obj = setInterval(function(){}, 5000)
        clearInterval(obj)
    设置延时
        var obj = setTimeout(function(){}, 5000)
        clearTimeout(obj)

    事件
        onclick onblur onfocus
    面试题:行为 样式 结构 相分离的页面?
             js css html
    this 谁调用this,就指向谁

    绑定事件
        1.直接绑定标签, onclick="func()"
        2.现获取dom对象,然后进行绑定
            document.getElementById("id").onclick=func()

        this,当前触发事件的标签
            第一种绑定方式:
                onclick="func(this)"
                function func(self){
                    //self,当前点击的标签
                }
            第二种绑定方式:
                id ="id"
                document.getElementById("id").onclick=function(){
                    this 指代当前点击的标签
                }
            第三种绑定方式:
                一个事件可以执行多个函数
                addEventListener()
    css属性转为javascript   -去掉,首字符大写
    多查手册
    sublime  插件 emmet

代码实例:

AO对象

function func(age){
        console.log(age);  //function
        var age = 27;
        console.log(age);  //27
        function age() {}
        console.log(age); //27
    }
    func(3);
    /*
    active object ==> AO
    1.形式参数  AO.age = undefined; AO.age = 3;
    2.局部变量  AO.age = undefined;
    3.函数声明表达式  AO.age = function()
     */

一个hover两个元素不一样的效果

<style>
    .item:hover{
        background-color: #e4393c;
    }
    .item:hover .b{
        background-color: #64b5dd;
    }
</style>
<div class="item">
    <div class="a">1234567890</div>
    <div class="b">1234567890</div>
</div>

显示效果

前端学习:javascript进阶

javascript以函数为作用域

<script>
        xo = "eric";
        function func() {
            xo = "alex";
            function foo() {
                console.log(xo);  //tony
                xo = "Jack";
            }
            xo = "tony";
            return foo;
        }
        var ret = func();
        ret()
</script>

左侧菜单跟随滚动

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>左侧菜单跟随滚动</title>
    <style>
        body{
            margin: 0 auto;
        }

        .pg-header{
            height:48px;
            background-color: #0d3ea2;
        }
        .pg-content .menu{
            width:200px;
            position: fixed;
            top:48px;
            left:0;
            bottom:0;
            background-color: #333333;

        }
        .pg-content .content{
            position:fixed;
            top: 48px;
            left:200px;
            right:0;
            bottom:0;
            background-color: #dddddd;
            overflow:auto;
        }
    </style>
</head>
<body>
<div class="pg-header"></div>
<div class="pg-content">
    <div class="menu">
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
    </div>
    <div class="content">
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
    </div>
</div>
<div class="pg-footer"></div>
</body>
</html>

显示效果

前端学习:javascript进阶

左侧菜单固定不动

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>左侧菜单固定不动</title>
    <style>
        body{
            margin: 0 auto;
        }

        .left{
            float: left;
        }

        .right{
            float: right;
        }

        .pg-header{
            height:48px;
            background-color: #0d3ea2;
        }

        .pg-content .menu{
            width:200px;
            position: absolute;
            top:48px;
            left:0;
            bottom:0;

        }
        .menu-back{
             background-color: #333333;
        }
        .pg-content .content{
            position:absolute;
            top: 48px;
            left:200px;
            right:0;
            bottom:0;
            /*!*min-width:980px;*!  最小宽度*/

            /*overflow:auto;*/
        }
        .content-back{
            background-color: #dddddd;
        }
    </style>
</head>
<body>
<div class="pg-header"></div>
<div class="pg-content">
    <div class="menu left">
        <div class="menu-back">
        <p style="margin-top: 0">lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
    </div></div>
    <div class="content right">
        <div class="content-back">
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>

    </div>
</div></div>
<div class="pg-footer"></div>
</body>
</html>

效果同上

顶部菜单栏

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>顶部菜单栏</title>
    <link rel="stylesheet" href="font-awesome-4.7.0/css/font-awesome.min.css">
    <style>
        body{
            margin: 0 auto;
        }

        .left{
            float: left;
        }

        .right{
            float: right;
        }

        .pg-header{
            height:48px;
            background-color: #0d3ea2;
            line-height: 48px;
             color: white;
        }
        .pg-header .logo{
            width:200px;
            color:white;
            font-size: 21px;
            text-align: center;
            background-color: #0d3686;

        }
        .pg-header .icons{
            padding: 0 20px;

        }
        .pg-header .icons:hover{
            background-color: #0d3686;
        }
        .pg-header .icons .num{
            background-color: red;
            display: inline-block;
            padding: 10px 7px;
            font-size:12px;
            border-radius: 50%;
            line-height: 1px;
        }

        .pg-header .user{
            padding: 0 30px;
            height: 48px;
            margin-right: 100px;
            background-color: #0d3ea2;

        }

        .pg-header .user .menu{
            position: absolute;
            right:40px;
            top:48px;
            width:160px;
            z-index:20;
            background-color: #dddddd;
            display:none;

        }
        .pg-header .user .menu a{
            display:block;
            text-underline: none;
            /*background-color: #0d3686;*/
        }

        .pg-header .user:hover{
            background-color: #0d3686;

        }
        .pg-header .user:hover .menu{
            display:block;

        }
        .pg-header .user .menu a:hover{
           background-color: #64b5dd;

        }
        .pg-header .user a img{
            width:40px;
            height: 40px;
            border-radius: 50%;
            margin-top: 4px;
        }

        .pg-content{

        }
        .pg-content .menu{
            width:200px;
            position: absolute;
            top:48px;
            left:0;
            bottom:0;

        }
        .menu-back{
             background-color: #333333;
        }
        .pg-content .content{
            position:absolute;
            top: 48px;
            left:200px;
            right:0;
            bottom:0;
            z-index:9;
            /*!*min-width:980px;*!  最小宽度*/

            /*overflow:auto;*/
        }
        .content-back{
            background-color: #dddddd;
        }
    </style>
</head>
<body>
<div class="pg-header">
    <div class="logo left">毛豆科技</div>
    <div class="user right">
        <a href="#"><img src="img/微信头像.jpg" alt=""></a>
        <div class="menu">
            <a href="#">设置</a>
            <a href="#">资料</a>
            <a href="#">退出</a>
        </div>
        </div>

        <div class="icons right">
         <i class="fa fa-commenting-o" aria-hidden="true"></i>
             <span class="num">5</span>
     </div>
     <div class="icons right">
         <i class="fa fa-envelope-o" aria-hidden="true"></i>
     </div>

</div>
<div class="pg-content">
    <div class="menu left">
        <div class="menu-back">
            <p>lalalallala</p>
            <p>lalalallala</p>
            <p>lalalallala</p>
            <p>lalalallala</p>
            <p>lalalallala</p>
            <p>lalalallala</p>
            <p>lalalallala</p>
            <p>lalalallala</p>
            <p>lalalallala</p>
            <p>lalalallala</p>
            <p>lalalallala</p>
    </div></div>
    <div class="content right">
        <div class="content-back">
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
        <p>lalalallala</p>
    </div>
</div></div>
<div class="pg-footer"></div>
</body>
</html>

显示效果

前端学习:javascript进阶

提交表单


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>提交表单</title>
</head>
<body>
<form id="f1" action="http://www.baidu.com/s?">
    <input type="text" name="wd">
    <input type="submit" value="提交">
    <a onclick="submitForm()">提交</a>
</form>
<script>
    function submitForm() {
        document.getElementById("f1").submit();
    }
</script>
</body>
</html>

事件捕捉冒泡

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #main{
            width:400px;
            height:300px;
            background-color: #e4393c;
        }

        #content{
            width:300px;
            height:200px;
            background-color: #0d3ea2;
        }
    </style>
</head>
<body>
捕捉:html -> body -> div
冒泡:div -> body -> html

<div id="main">
    <div id="content"></div>
</div>
<script>
    var main = document.getElementById("main");
    var content = document.getElementById("content");

    // false 冒泡  true  捕捉
    main.addEventListener("click", function () {
        console.log("main");
    }, true);

     content.addEventListener("click", function () {
        console.log("content");
    }, true);


</script>
</body>
</html>

添加标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加标签</title>
</head>
<body>
    <button onclick="addElement1()">添加1</button>
    <button onclick="addElement2()">添加2</button>

    <div id="i1"><p><input type="text"></p></div>

    <script>

        // 通过字符串创建
        function addElement1() {
            // 创建标签,添加到li里面
            var tag = document.getElementById("i1");
            var newTag = "<p><input type='text'></p>";
            // beforeBegin  afterBegin  beforeEnd  afterEnd
            tag.insertAdjacentHTML("beforeEnd", newTag);
        }

        // 通过对象方式
         function addElement2() {
            // 创建标签,添加到li里面
            var tag = document.getElementById("i1");

            var input = document.createElement("input");
            input.setAttribute("type", "text");
            input.style.color = "red";
            var p = document.createElement("p");
            p.appendChild(input);

            tag.appendChild(p);
        }
    </script>
</body>
</html>

绑定多个事件函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>绑定多个事件函数</title>
</head>
<body>
    <div id="i1" style="width: 300px; 
    height:400px; background-color: red"></div>
    <script>
        var tag = document.getElementById("i1");
        tag.addEventListener("click", function () {
            console.log("111");
        },false);
        tag.addEventListener("click", function () {
            console.log("222");
        },false);

    </script>
</body>
</html>

行为样式结构分离实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>行为样式结构分离实例</title>
    <style>
        #i1{
            background-color: #0d3686;
            width: 300px;
            height: 400px;
        }
    </style>
</head>
<body>
    <div id="i1"></div>

    <script>
        var div = document.getElementById("i1");
        div.onclick = function(){
            console.log("hello world")
        }
    </script>
</body>
</html>

表格隔行换色-1

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表格隔行换色-1</title>
</head>
<body>
    <table border="1px" style="width:300px">
        <tr onmouseover="t1(0)" onmouseout="t2(0)"><td>1</td><td>2</td><td>3</td></tr>
        <tr onmouseover="t1(1)" onmouseout="t2(1)"><td>1</td><td>2</td><td>3</td></tr>
        <tr onmouseover="t1(2)" onmouseout="t2(2)"><td>1</td><td>2</td><td>3</td></tr>
    </table>

    <script>
        function t1(n) {
            var tag =document.getElementsByTagName("tr")[n];
            console.log(tag);
            tag.style.backgroundColor="red";
        }

        function t2(n) {
            var tag =document.getElementsByTagName("tr")[n];
            console.log(tag);
            tag.style.backgroundColor="";
        }
    </script>
</body>
</html>

效果

前端学习:javascript进阶

表格隔行换色-2

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表格隔行换色-2</title>
</head>
<body>
    <table border="1px" style="width:300px">
        <tr><td>1</td><td>2</td><td>3</td></tr>
        <tr><td>1</td><td>2</td><td>3</td></tr>
        <tr><td>1</td><td>2</td><td>3</td></tr>
    </table>

    <script>

        var trs = document.getElementsByTagName("tr");
        var len = trs.length

        for(var i = 0; i < len; i++){
            // i =0 1 2 作用域改变了
            trs[i].onmouseover = function () {
                //this指向调用者
                this.style.backgroundColor="red";
            };

            trs[i].onmouseout = function () {
                this.style.backgroundColor="";
            };
        }

    </script>
</body>
</html>

设置延时

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>设置延时</title>
</head>
<body>
<div id="i1"></div>
<input onclick="del()" type="button" value="删除">

<script>
    function del() {
        var tag = document.getElementById("i1");
        tag.innerText="已删除";
        var obj = setTimeout(function () {
            tag.innerText="";
        }, 5000)
    }
</script>
</body>
</html>

输入框提示功能

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>输入框提示功能</title>
</head>
<body>
    <div style="width:600px; margin: 0 auto;">
        <input id="i1" onfocus="Focus()" onblur="Blur()" type="text" value="请输入关键字">
        <input id="i2" type="text" placeholder="请输入关键字">

    </div>
    <script>
        // 光标移入输入框隐藏提示文字
        function Focus() {
            var tag = document.getElementById("i1");
            var val = tag.value;
            if(val=="请输入关键字"){
                tag.value="";
            }
        }

        // 光标移出输入框显示提示文字
        function Blur() {
            var tag = document.getElementById("i1");
            if(tag.value.length==0){
                tag.value="请输入关键字";
            }
        }
    </script>
</body>
</html>

前端学习:javascript进阶

上一篇:Grails+Xfire 搭建Web Service环境


下一篇:事务原子性、一致性、持久性的实现原理