HTML、CSS和JS

一、html

1、web流程中的HTML

HTML---->赤裸裸的人

CSS  ---->穿华丽的衣服

JS    ---->让人动起来

浏览器和server端之间的通信本质上是字符串;浏览器将字符串处理为可视化的东西;

web框架的祖宗是socket;

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import socket
def handle_request(client):
    buf = client.recv(1024)
    client.send("HTTP /1.1 200 OK 

")
    client.send("<h1 style='color=red;'>123456</h1>")

def main():
    sock = socket.socket()
    sock.bind(('localhost',8004))
    sock.listen(5)
    while True:
        connection,address = sock.accept()
        handle_request(connection)
        connection.close()

if __name__ == '__main__':
    main()
View Code
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import socket
def handle_request(client):
    buf = client.recv(1024)
    client.send("HTTP /1.1 200 OK 

")
    f = open('s.html')
    data = f.read()
    f.close()
    client.send(data)

def main():
    sock = socket.socket()
    sock.bind(('localhost',8004))
    sock.listen(5)
    while True:
        connection,address = sock.accept()
        handle_request(connection)
        connection.close()

if __name__ == '__main__':
    main()
使用html文件

2、html文档树之head信息

a、head头

b、body

内行标签:自己有多少占多少

块级标签:占整行

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">     <!--页面编码-->
    <!--<meta http-equiv="REFRESH" content="5"> -->   <!--刷新5s-->
   <!-- <meta http-equiv="refresh" content="5; url=http://www.baidu.com"> -->   <!--5秒之后跳转到后面的URL-->
    <title>My test</title>
    <!--<link rel="short icon" href="favicon.icon">-->     <!--CSS在其他文件中渲染渲染-->
</head>
<!--内嵌标签和块级标签-->
<body>
<h1 style="background-color: red">abdsdfdfdfdfdf</h1>   <!-- 一个属性可以不加;号-->
<a style="background-color: green;color: antiquewhite;">汽车之家</a>    <!--多个属性需要加;号,只对文字部分涂色-->
<p>1234</p>    <!--段落,分一段,另起一段-->
<p>ABC<br/>abc</p>    <!--<br/>换行-->
<a href="http://www.taobao.com">Charles </a>    <!--超链接-->
<a target="_blank" href="http://www.qq.com">哇哈哈</a>    <!--在新的tab中打开链接-->
<a href="#a2">书签</a>    <!--跳转到ID为2的位置-->
<div id="a1" style="height: 700px;">1</div>
<div id="a2" style="height: 500px;">2</div>    
</body>
</html>
View Code

 c、标签

<select name="group">    <!--提交的时候,让value的值等于group,在from表单的时候使用-->
    <option value="1">上海</option>    
    <option value="2">北京</option>
    <option value="3" selected="selected">广州</option>    <!--默认-->
select 标签
<select>
    <optgroup label="河北省">    不可选
        <option>石家庄</option>
        <option>邯郸</option>
    </optgroup>
</select>
select标签
<input type="checkbox" />    内嵌的,做复选框
<input type="checkbox" />
<input type="checkbox" />
<input type="checkbox" checked="checked"/>    默认
input标签

<input type="radio" name="gender"/>    #name相同的复选框之间互斥
<input type="radio" name="gender"/>
<input type="radio" />
<input type="radio" />
input
<input type="text" />
<input type="text" value="123"/>    <!--默认值-->
<input type="password" />
<input type="email" />    <!--必须为email格式-->
input输入框

<input type="button" value="提交" >
<input type="submit" value="提交" >
input button

<input type="file" />
input file上传文件

<textarea style="height: 50px; 20px;">xxxxx</textarea>
textarea

form表单

<form action="http://127.0.0.1:8000/login">
    <p>用户名:<input type="text" name="user" />  </p>    提交到后台的部分为字典
    <p>密码:<input type="password" name="pwd" />  </p>
    <p>
        <input type="radio" name="gender" value=1 />男<br>
        <input type="radio" name="gender" value=1 />女<br>
    </p>
    <p>
        部门:<select name="depart" >
        <option value="1">CEO</option>
        <option value="2">DBA</option>
    </select>
    </p>
    <input type="submit" value="提交" />    <!--只有为submit才可以提交-->
</form>

</body>
</html>
form表单

<textarea name="multi" ></textarea>
<input type="checkbox" name="favor" value="v1" />
<input type="checkbox" name="favor" value="v2" />
<input type="checkbox" name="favor" value="v3" />
<input type="checkbox" name="favor" value="v4" />    <!--提交的时候{'favor':v1,v2,v3}-->
View Code

lable

<div id="t312">
    <h2>
        lable
    </h2>
    姓名:
    <input id="name1" type="text">
    婚否:
    <input id="marry" type="checkbox">
    <br>
</div>

<label for="name2" >
    姓名:
    <input id="name2" type="text">
</label>
<label for="marry2" >
    婚否:
    <input id="marry2" type="checkbox">
</label>
divhe lable实现

列表:

<ul>
    <li>zbc</li>
    <li>ccc</li>
    <li>ggg</li>
</ul>
<ol>
    <li>zbc</li>
    <li>ccc</li>
    <li>ggg</li>
</ol>
<dl>
    <dt>河北省</dt>
    <dd>邯郸</dd>
    <dd>石家庄</dd>
</dl>
自动加黑点、加数字以及内容和标题

table

<table border="1">    <!--border表示边框-->
    <tr>
        <td>1</td>    <!--tr表示行,td表示列-->
        <td>2</td>
        <td>3</td>
    </tr>
    <tr>
        <td>1</td>    <!--多行可以多加几个tr-->
        <td colspan="2">2</td>
        <td rowspan="2">3</td>
    </tr>

</table>
View Code

<table border="1">    <!--border表示边框-->
    <tr>
        <td>1</td>    <!--tr表示行,td表示列-->
        <td>2</td>
        <td>3</td>
    </tr>
    <tr>
        <td>1</td>    <!--多行可以多加几个tr-->
        <td colspan="2">2</td>    <!--横向占两个格-->
        <td rowspan="2">3</td>    <!--纵向占两个格-->
    </tr>
table合并单元格

 给table添加表头

<table border="1">    <!--border表示边框-->
    <thead>
        <tr>
            <th>标题1</th>      <!--th表示列-->
            <th>标题2</th>
            <th>标题3</th>
        </tr>
    </thead>
    <tbody>    <!--table的内容-->
        <tr>
            <td>1</td>    <!--tr表示行,td表示列-->
            <td>2</td>
            <td>3</td>
        </tr>
        <tr>
            <td>1</td>    <!--多行可以多加几个tr-->
            <td colspan="2">2</td>    <!--横向占两个格-->
            <td rowspan="2">3</td>    <!--纵向占两个格-->
        </tr>
    </tbody>

</table>
View Code

 fieldset增加画框

<fieldset>
    <legend>登录</legend>
    <p>用户名:</p>
    <p>密码:</p>
</fieldset>
View Code

二、CSS的基本使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">     <!--页面编码-->
    <!--<meta http-equiv="REFRESH" content="5"> -->   <!--刷新5s-->
   <!-- <meta http-equiv="refresh" content="5; url=http://www.baidu.com"> -->   <!--5秒之后跳转到后面的URL-->
    <title>My test</title>
    <!--<link rel="short icon" href="favicon.icon">-->     <!--CSS在其他文件中渲染渲染-->
    <style>
        .re{
            color: red;    
        }
        span{
            font-size: 100px;
        }
        #name2{
            background-color: antiquewhite;
        }
        
    </style>
</head>
head
<div style="color: red">
    abcd
    </div>

<span class="re">wahaha</span>
<span id="name2" class="re">wwwww</span>
<div style="background-color: aquamarine;">asjhdgsjhgdhjash</div>
<div style="background-image: url('11111.jpg');height: 1000px;background-repeat: no-repeat">sasaasdasddasdas</div>

也可以将css代码放到.css文件中
body

div属性介绍

background属性

1、backgrand-color:设置背景颜色;

2、background-image: url("图片地址"): 将此属性包含在class选择器中,需要设定height和width(相当于在墙上扣了一个洞),如果所设的高度或者宽度大于图片的像素,就会向下和向右复制;

  如果不希望重复复制,使用background-repeat: no-repeat/x-repeat/y-repeat;

3、background-repeat:设置背景图片不重复;

4、background-position:设置图片的位置;

border属性

1、border给一个div标签设置边框,可以设置上右下左的边框,可以指定边框的高度和宽度等;

display属性

1、display:none; 将整个标签隐层起来;

2、display: block;将标签变为块级标签;

3、display: inline;将标签变为内联标签;

cursor属性

1、cursor: pointer;指定不同的样式鼠标放置上去之后显示的样式;

2、cursor: url("自定义图片"),auto;将样式设置为自定义的图片;

 

 position属性

1、fixed:固定位置,相对于窗口而言的;

<div style="height: 5000px;background-color: red">
    <div style="position: fixed;bottom: 40px;right: 30px">返回顶部</div>
    </div>

2、absolute和relative:两者配合使用,默认absolute显示的位置是相对窗口而言的,如果需要相对于父标签 的窗口大小来设定位置的话,就需要在父标签冲添加relative属性;

    <div style="background-color: green;height: 100px; 200px;position: relative">
        <div style="position: absolute;right: 20%;bottom: 20%">
            定位
        </div>
    </div>
opacity透明度:范围0~1
1、z-index的值越大,表示越外层;
<div style="z-index: 10;background-color: black;position: fixed;top: 0;bottom: 0;left: 0;right: 0">    #占满全屏需要fixed属性
    <span style="background-color: white">我是黑色</span>
</div>
<div style="z-index: 20;background-color: red;opacity:0.8;position: fixed;top: 0;bottom: 0;left: 0;right: 0"></div>

内外边距属性:布局的使用使用

1、margin:外边距;

2、padding:内边距;

<div style="height: 70px;border: 1px solid red;">
    <div style="height: 50px; background-color: green;margin-top: 10px "></div>      外边距与边框的距离;内边距表示自身增加或者减少的大小;
</div

border设置边

<div style="border: 3px solid green;">
    hhhhhhhhhh
</div>
设置上下左右边框
<div style="border: 3px solid green;">
    hhhhhhhhhh
</div>
<span style="display: none"  id="name2" class="re">ahahaha</span>    <!--display为none,用于对当前弹出的窗口时,点击关闭时消失-->
View Code

cursor改变鼠标放在对应位置的图标

<div style="border-left: 10px solid green;cursor: pointer">
    bbbbbsbsbsbsbsbxzxxxcccccccc
</div>
View Code

颜色:

    <style>
        .w_left{
             20%;
            background-color: red;
            height: 500px;
            float: left;
        }
        .w_right{
             80%;
            background-color: green;
            height:500px;
            float: left;
        }
    </style>


<div>
    <div class="w_left"></div>
    <div class="w_right"></div>
</div>
View Code

默认div标签是块级标签

 三、前端开发的必要性

先推荐两个前端开发的网站:http://echarts.baidu.com/         http://www.hcharts.cn/,这两个可视化网站都是用过JS实现的;

四、CSS选择器

1、div选择器、id选择器、class类选择器以及关联选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
        <style>
        div{        /*标签选择器*/
            font-size: 50px;
        }
        #i1{    /*id选择器,id和div一般不要使用,用class*/
            background-color: red;
        }
        .c1{       /*class类选择器*/
            color: cornflowerblue;
        }
        .p{
            background-color: pink;
            }
        .container li a{    /*关联选择器,找到container下的li,li下的a应用这个选择器*/
                background-color: red;
            }

        .container .l .a{
                background-color: red;
            }
    </style>
</head>
<body>
    <title>Title</title>
    <div>This is  a test</div>
    <a id="i1">选择器</a>    <!--html中的ID是不能重复的-->
    <a class="c1">aaa</a>
    <span class="c1">This two test</span>    <!--class可以重复-->

    <div class="container">
        <ul>
            <li>
                <a>hhhhh</a>
            </li>
            <li class="p">1111啊啊啊1</li>
            <li>11111</li>
            <li>11111</li>
            <li>11111</li>
            <li>
                <a class="l">
                    <span class="a">shshshhshshs</span>
                </a>
            </li>

        </ul>
    </div>
</body>
</html>
View Code

2、组合选择器和属性选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .c1 #il a .cc1,.c1 #il a .cc2{
            color: red;
            }
        .c1 #il a .cc1,.cc2{       /*组合选择器,逗号表示或的意思,上面的选择器意义相同;*/
            color: cornflowerblue;
        }
        .con input[type="text"][name="username"]{     /*#首先从input标签中找到type为text的标签,然后再找到name为username的标签*/
            border: 3px solid red;                       /*属性选择器:在写表单验证的时候*/
        }                                                   /*通过自定义属性直接找到对应的标签,所有的标签都可以使用自定义属性*/
        .con input[alex="xxx"]{

        }
    </style>
</head>
<body>
    <div class="c1">
        <ul id="il">
            <a>
                <span class="cc1">
                    你好!!!!!
                </span>
                <span class="cc2">
                    新的一天真好!!!
                </span>
            </a>
        </ul>
    </div>
    <div class="con">
        <input alex="xxx" type="text" name="username" />
        <input type="text" />
        <input type="file" />
        <input type="password"/>
        <input type="button"/>
        <input type="checkbox"/>
        <input />
    </div>
</body>
</html>
View Code

五、JS之Dom

博客地址:http://www.cnblogs.com/wupeiqi/articles/5369773.html

1、js序列化和反序列化:

var m={'k1':11}
Object {k1: 11}
s = JSON.stringify(m)    #序列化
"{"k1":11}"
JSON.parse(s)    #反序列化
Object {k1: 11}

2、js的for循环

对于数组存在两种for循环:

a、

var li=[11,22,33];
undefined
li
[11, 22, 33]
for(var index in li){
    console.log(index,li[index]);
}
VM138:3 0 11
VM138:3 1 22
VM138:3 2 33

b、

for(var i=0;i<li.length;i++)
    {
       console.log(i,li[i]);
    }
VM152:4 0 11
VM152:4 1 22
VM152:4 2 33

对于字典的循环:


dic = {'k1':123,'k2':567}
Object {k1: 123, k2: 567}


for
(var item in dic){ console.log(item,dic[item]) } VM219:3 k1 123 VM219:3 k2 567

 3、dom之选择器(获取标签)

getElementsByTagName
document.getElementsByTagName('h1')    
[<h1>​123​</h1>​, <h1>​456​</h1>​]
tags=document.getElementsByTagName('h1')
[<h1>​123​</h1>​, <h1>​456​</h1>​]

tags
[<h1>​123​</h1>​, <h1>​456​</h1>​]
tags[0].innerText='index';
"index"
tags[1].innerText='index1';
"index1"
<body>
    <h1>123</h1>
    <h1>456</h1>
<div>
    <div id="n1"></div>
    <ul>
        <li>123</li>
        <li>123</li>
        <li>123</li>
        <li>123</li>
        <li>123</li>
        <li>123</li>
    </ul>
    <div>
        <div class="c1">1</div>
        <div class="c1">2</div>
        <div class="c1">3</div>
    </div>
    <form>
        <p>用户名:<input  name="username" value="123"/></p>
        <p>密码:<input  name="pwd" value="456"/></p>
    </form>
</div>
    <script type="text/javascript">
        var nid = document.getElementById('n1');      #
        console.log(nid.innerText);
        nid.innerText='alex';
        var lis = document.getElementsByTagName('li');
        for (var i in lis){
            var item =lis[i];
            item.innerText=i;
        }

        var li2 = document.getElementsByClassName('c1');
        console.log(li2);

        var username = document.getElementsByName('username')[0];       
        var pwd = document.getElementsByName('pwd')[0];
        console.log(username,pwd);
        console.log(username.value,pwd.value)      #获取form input标签中的输入的值;
    </script>
</body>
</html>

4、dom之自增数字实例(实现点击+1按钮,上方的数字就会+1)

<div id="num">1</div>
 <input type="button" value="+1" onclick="Add();" />    #给button注册一个事件

        function Add(){
//            alert(123);
            var nid = document.getElementById('num');
            var text=nid.innerText;
            text=parseInt(text);     #转化为整型
            text +=1;
            nid.innerText=text;
        }

5、dom之操作文本内容

innertext和innerHTML的区别

<div id="n2">
    alex
    <h1>SB</h1>
</div>

tag = document.getElementById('n2')
console.log(tag.innerText)
console.log(tag.innerHTML)

=====结果如下======
alex
SB

    alex
    <h1>SB</h1>

特殊值

<h3><input  type="button" onclick="GetValue()" value="xxx"/></h3>
<input  id = "n3" type="text"/>
<select id="n4">
    <option value="1">上海</option>    #value为数字
    <option value="2">北京</option>
    <option value="3">深圳</option>
</select>
<textarea id="n5"> abcd</textarea>    #value为文本内容abcd


===注册事件,对上述标签的文本内容设置为固定值或者清空===

        function GetValue(){

            var obj = document.getElementById('n5');
            alert(obj.value);
//            obj.value="";
            obj.value="2";
        }

 6、dom编程之事件和搜索框实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<input type="text"   id="search"  value="请输入关键字" onfocus="Focus();" onblur="Blur();"/>
<!--onfocus在点击的时候执行,onblur在移除的时候执行-->
<script>
    function Focus() {       
        var nid = document.getElementById('search');
        var value = nid.value;
        if (value == "请输入关键字"){
            nid.value ="";
        }
    }

    function Blur() {
        var nid = document.getElementById('search');
        var value = nid.value;
        if (!value.trim()) {
            nid.value = "请输入关键字"
        }
    }
</script>
</body>
</html>

 7、dom编程之创建标签

有两种方式:

方式1:通过id或class创建

<div id="container"></div>
<a href="http://www.baidu.com" onclick="return AddElement();">添加</a>     #return 的结果只有是true,才会执行href部分的内容
<script>
    function AddElement(){
//        alert('123');
        var nid = document.getElementById('container');
        var tag = "<input type='text'>";
//        nid.innerHTML=tag;      #只会添加tag的内容
        container.insertAdjacentHTML('beforeBegin',tag);    #在开头增加tag的标签

return false;

方式2:通过对象创建

<div id="container"></div>
<a href="http://www.baidu.com" onclick="return AddElement();">添加</a>

<script>
    function AddElement(){
        var creareObj = document.createElement('a');
        creareObj.href = "http://www.baidu.com"
        creareObj.innerHTML = "老男孩"
        console.log(creareObj);
        var nid = document.getElementById("container");
//        nid.innerHTML=creareObj;
        nid.appendChild(creareObj);
        return false;
    }

8、dom之操作标签属性

<div id="container" sb="xx" class="c1" style="font-size: 48px; color: red">cbdbd</div>
var nid = document.getElementById('container')
nid
<div id=​"container" sb=​"xx" class=​"c1" style=​"font-size:​ 48px;​ color:​ red">​cbdbd​</div>​
nid.style.fontSize = "120px"     #设置文字大小
"120px"
nid.setAttribute('class','ooo')    #添加属性,其他 get为获取,del为删除

nid.className = "xxx" --->class
nid.style.backgrandcolor = "red" #设置背景颜色

9、dom之提交表单

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<form id="form1" action="https://www.sogou.com/web"  method="get">
    <input   name="query" type="text"   />
    <!--<input type="submit" value="提交" />-->    #form提交
    <div onclick="Submit();">
        提交
    </div>
</form>
<script>
    function Submit(){
        document.getElementById('form1').submit();    #js提交
    }
</script>
</body>
</html>

10、dom之组织表单默认行为

<form id="form1" action="https://www.sogou.com/web"  method="get">
    <input   name="query" type="text"   />
    <input type="submit" onclick=" return MySubmit();" value="提交" />
</form>
    function MySubmit() {
        var q = document.getElementsByName('query')[0];
        if (q.value.trim()){
            return true;
        }else{
            alert('请输入内容');
            return false;
        }

 11、dom之补充知识以及定时器和跑马灯实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <input type="button"  value="上来啊" onmouseover="MyConfirm();">    #onmouseover表示鼠标移动到input上面就会触发事件
    <script>
        function MyConfirm(){
            var ret = confirm('SB');             #在模态对话框出现的时候,如果点击确定,那么confirm的值就为true,取消就为false
            console.log(ret)
        }
    </script>
</body>
</html>

window.location.href   #显示当前html文件的路径

window.location.href="http://www.baidu.com"   #跳转到指定的网站

window.location.reload()    #刷新页面

跑马灯实例如下:

setInterval("Func()",1000)    #每隔1秒就会启动一个线程,触发Func函数执行

    function Func(){
        var text = document.title
        var firstChar = text.charAt(0);
        var subText = text.substring(1,text.length);
        var new_title = subText+firstChar;    
        document.title = new_title;

停止定时器

<input type="button" onclick="StopInterval();" value="停下来" />       #绑定事件,停止定时器
<script>
//    setInterval("alert('123')",2000)
    obj1 = setInterval("Func()",1000)           #默认每个定时器都会创建一个句柄
    setTimeout()
    function StopInterval() {
        //清除定时器
        clearInterval(obj1);                #停止定时器句柄
    }
setTimeout("Func()",1000)    #和setInterval用法一样,不同点是只会运行一次;

六、JS之jQuery

1、jQuery之基本选择器

<div id="n1"></div>
<div class="c1">22</div>
<div class="c1">44</div>
<div>33</div>
<div id="n3">
    <div>
    <div class="c3">
        <span>
            <a>dddd</a>
        </span>
    </div>
        </div>
</div>
<a></a>
<span id="n2"></span>
<script src="jquery-1.8.2.min.js"></script>
<script >
    //$=jQuery
//    $("#n1").text('123');      #id选择器
//    $('div').text('xxx');      #标签选择器
//    $('.c1').text('000');       #class选择器
//    $('.c1,a,#n2').text("OK");    #select选择器
    $('#n3 div .c3 span a').text('ddddd');    #层级选择器

2、选择器和筛选器

3、左侧菜单实例

实现:点击菜单的title的时候,显示菜单的内容,而将其他菜单的内容隐藏

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        .menu{
            float: left; 30%;height: 500px; background-color: aqua;
        }
        .contect{
            float: left; 70%;height: 500px; background-color: blue
        }
        .title{
            background-color: black;
            color: white;
            height: 50px;
            line-height: 50px;
            /*line-height: 表示文字跟随div的高度变化而变化;*/
        }
        .hide{
            display: none;
        }
    </style>
</head>
<body>
<div>
    <div class="menu">
        <div  class="item">
            <div class="title" onclick="Func(this);">菜单一</div>     #this表示点击当前标签
            <div class="body hide">
                <div>1.1</div>
                <div>1.2</div>
                <div>1.3</div>
            </div>
        </div>
        <div  class="item">
            <div class="title" onclick="Func(this);">菜单二</div>
            <div class="body hide">
                <div>2.1</div>
                <div>2.2</div>
                <div>2.3</div>
            </div>
        </div>
        <div  class="item">
            <div class="title" onclick="Func(this);">菜单三</div>
            <div class="body hide">
                <div>3.1</div>
                <div>321</div>
                <div>3.3</div>
            </div>
        </div>
    </div>
    <div class="contect"></div>

</div>

<script  src="jquery-1.8.2.min.js"></script>
<script>
    function Func(ths) {
        console.log($(ths).text());
        $(ths).next().removeClass('hide');    #移除当前标签兄弟标签的hide属性
        $(ths).parent().siblings().find('.body').addClass('hide');    #将父标签的兄弟标签含有body属性的标签增加hide属性
    }
</script>
</body>
</html>

 4、Tab菜单

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        .tab-box .box-menu{
            background-color: #dddddd;
            border: 1px solid #dddddd;
        }
        .tab-box .box-body{
            border: 1px solid #dddddd;
        }
        .hide{
            display: none;
        }
        .current{
            background-color: red;
            color: white;
        }
    </style>
</head>
<body>
<div class="tab-box">
    <div class="box-menu">
        <a charles="c1" onclick="ChangeTab(this);">菜单一</a>      #class为自定义属性
        <a charles="c2" onclick="ChangeTab(this);">菜单二</a>
        <a charles="c3" onclick="ChangeTab(this);">菜单三</a>
    </div>
    <div class="box-body">
        <div id="c1">内容一</div>
        <div id="c2" class="hide">内容二</div>
        <div id="c3" class="hide">内容三</div>
    </div>
</div>
<script src="jquery-1.8.2.min.js"></script>
<script>
    function ChangeTab(ths) {
        $(ths).addClass('current').siblings().removeClass('current');
        var contentId = $(ths).attr('charles')      #获取当前标签的class属性的值;
        var temp = "#" + contentId;      #拼接处id属性
        $(temp).removeClass('hide').siblings().addClass('hide');     #将包含有对应id属性的标签移除hide属性,起兄弟标签增加hide属性;
    }
</script>
</body>
</html>

 对Tab修饰结果如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        .tab-box .box-menu{
            background-color: #dddddd;
            border: 1px solid #dddddd;
            height: 33px;
            line-height: 33px;     #字体与height一样大小,并居中于div中间;
        }
        .box-menu a{
            border-right: 1px solid #664747;   #增加右侧边框
            padding: 10px;    #增加内边距;
        }
        .tab-box .box-body{
            border: 1px solid #dddddd;
        }
        .hide{
            display: none;
        }
        .current{
            background-color: white;
            color: black;
            border-top: 2px solid red;
        }
    </style>
</head>
<body>
<div class="tab-box">
    <div class="box-menu">
        <a charles="c1" onclick="ChangeTab(this);">菜单一</a>
        <a charles="c2" onclick="ChangeTab(this);">菜单二</a>
        <a charles="c3" onclick="ChangeTab(this);">菜单三</a>
    </div>
    <div class="box-body">
        <div id="c1">内容一</div>
        <div id="c2" class="hide">内容二</div>
        <div id="c3" class="hide">内容三</div>
    </div>
</div>
<script src="jquery-1.8.2.min.js"></script>
<script>
    function ChangeTab(ths) {
        $(ths).addClass('current').siblings().removeClass('current');
        var contentId = $(ths).attr('charles')
        var temp = "#" + contentId;
        $(temp).removeClass('hide').siblings().addClass('hide');
    }
</script>
</body>
</html>

 5、jQuery之属性操作

<input  id="c1" type="checkbox"  />
<input  id = "c2" type="checkbox"  />
<input  id="c3" type="checkbox"  checked="checked" />

a、attr

$('#c1').attr('checked','checked')
[<input id=​"c1" type=​"checkbox" checked=​"checked">​]
$('#c1').attr('checked')
"checked"
$('#c1').removeAttr('checked')
[<input id=​"c1" type=​"checkbox">​]
$('#c1').attr('checked')
标签中属性都适用,除了checkbox和redio(只有第一次生效)

$('#c1').attr('hh','sb')
[<div id=​"c1" hh=​"sb">​内容一​</div>​]
var i=$('#c1').attr('hh')
undefined
i
"sb"

 b、prop

$('#c1').prop('checked',true)      //选中
[<input id=​"c1" type=​"checkbox">​]
$('#c1').prop('checked',false)     //取消
[<input id=​"c1" type=​"checkbox">​]

6、全选、取消和反选

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<input  id="c1" type="checkbox"  />
<input  id = "c2" type="checkbox"  />
<input  id="c3" type="checkbox"  checked="checked" />
<div>
    <input type="button"  value="全选" onclick="SelectAll();"/>
    <input type="button"  value="取消" onclick="ClearAll();"/>
</div>
<div>
    <table border="1">
        <tr>
            <td><input type="checkbox" /></td>
            <td>123</td>
            <td>123</td>
        </tr>
        <tr>
            <td><input type="checkbox" /></td>
            <td>123</td>
            <td>123</td>
        </tr>
        <tr>
            <td><input type="checkbox" /></td>
            <td>123</td>
            <td>123</td>
        </tr>
    </table>
</div>
<script src="jquery-1.8.2.min.js"></script>
<script>
    function SelectAll() {
//        $('table input[type="checkbox"]')
        $('table :checkbox').prop('checked',true);      //全选
    }
    function ClearAll(){
        $('table :checkbox').prop('checked',false);    //取消
    }
</script>
</body>
</html>

 反选(jQuery的for循环)

    function ReverseAll() {
//        var checkboxlist = $('table :checkbox');
//        for (var i in checkboxlist) {
//            var ele = checkboxlist[i];
//
//            var isChecked = $(ele).prop('checked');
//            console.log(isChecked);
//            if(isChecked){
//                $(ele).prop('checked',false);
//            }else{
//                $(ele).prop('checked',true);
//            }
//        }

        $('table :checkbox').each(function () {      //jQuery循环每一个元素
            var isChecked = $(this).prop('checked');      //$(this)表示当前的元素
            if(isChecked){
                $(this).prop('checked',false);
            }else{
                $(this).prop('checked',true);
            }
        })
    }

 7、jQuery的for循环

除了上述的for循环之外,还有如下的循环方式;两种都是jQuery的扩展方式;

    function ReverseAll() {
        userlist = [11,22,33];
        $.each(userlist,function(i,item){
            console.log(i,item);
        });

8、JQuery之内容操作

//括号中没有参数是获取,有参数是设置;

html()
text()
val()    //专门针对input、select、textarea标签;

 9、返回顶部

预备知识:

      .css('backgrand-color','red');只针对css,是针对style中的部分;

      .$(window).scrollTop();整个窗体下拉的大小;可以针对div;

       overflow: auto;当div中的内容高度超过div的高度的时候,对div设置该属性就会差生下拉框效果;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        .go-top{
            position: fixed;
            bottom: 0;
            right: 0;
        }
        .hide{
            display: none;
        }
    </style>
</head>
<body>
<div  style="height: 2000px;background-color: #dddddd">
    顶部
    <div id="c1" style="height: 500px;background-color: red;overflow: auto">
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
        <p>dddd</p>
    </div>
</div>
<div class="go-top hide">
    <a onclick="GoTop();">返回顶部</a>
</div>
<script src="jquery-1.8.2.min.js"></script>
<script>
    function GoTop(){
        $(window).scrollTop(0);        //返回整个窗体顶部;
    }

    window.onscroll=function(){       /只要下拉框的位置发生变化,就会执行后面的函数;
        console.log(123);
        var currentTop = $(window).scrollTop();
        if(currentTop>100){
            $(".go-top").removeClass('hide');        //下拉超过100时,机会显示返回顶部标签;
        }else{
            $(".go-top").addClass('hide');
        }
    }
</script>
</body>
</html>

 10、jQuery之位置操作和滚动菜单实例

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>

        body{
            margin: 0px;
        }
        img {
            border: 0;
        }
        ul{
            padding: 0;
            margin: 0;
            list-style: none;
        }
        .clearfix:after {
            content: ".";
            display: block;
            height: 0;
            clear: both;
            visibility: hidden;
        }

        .wrap{
             980px;
            margin: 0 auto;
        }

        .pg-header{
            background-color: #303a40;
            -webkit-box-shadow: 0 2px 5px rgba(0,0,0,.2);
            -moz-box-shadow: 0 2px 5px rgba(0,0,0,.2);
            box-shadow: 0 2px 5px rgba(0,0,0,.2);
        }
        .pg-header .logo{
            float: left;
            padding:5px 10px 5px 0px;
        }
        .pg-header .logo img{
            vertical-align: middle;
             110px;
            height: 40px;

        }
        .pg-header .nav{
            line-height: 50px;
        }
        .pg-header .nav ul li{
            float: left;
        }
        .pg-header .nav ul li a{
            display: block;
            color: #ccc;
            padding: 0 20px;
            text-decoration: none;
            font-size: 14px;
        }
        .pg-header .nav ul li a:hover{
            color: #fff;
            background-color: #425a66;
        }
        .pg-body{

        }
        .pg-body .catalog{
            position: absolute;
            top:60px;
             200px;
            background-color: #fafafa;
            bottom: 0px;
        }
        .pg-body .catalog.fixed{
            position: fixed;
            top:10px;
        }

        .pg-body .catalog .catalog-item.active{
            color: #fff;
            background-color: #425a66;
        }

        .pg-body .content{
            position: absolute;
            top:60px;
             700px;
            margin-left: 210px;
            background-color: #fafafa;
            overflow: auto;
        }
        .pg-body .content .section{
            height: 500px;
        }
    </style>
</head>
<body>

    <div class="pg-header">
        <div class="wrap clearfix">
            <div class="logo">
                <a href="#">
                    <img src="http://core.pc.lietou-static.com/revs/images/common/logo_7012c4a4.pn">
                </a>
            </div>
            <div class="nav">
                <ul>
                    <li>
                        <a  href="#">首页</a>
                    </li>
                    <li>
                        <a  href="#">功能一</a>
                    </li>
                    <li>
                        <a  href="#">功能二</a>
                    </li>
                </ul>
            </div>

        </div>
    </div>
    <div class="pg-body">
        <div class="wrap">
            <div class="catalog">
                <div class="catalog-item" auto-to="function1"><a>第1张</a></div>
                <div class="catalog-item" auto-to="function2"><a>第2张</a></div>
                <div class="catalog-item" auto-to="function3"><a>第3张</a></div>
            </div>
            <div class="content">

                <div menu="function1" class="section">
                    <h1>第一章</h1>
                </div>
                <div menu="function2" class="section">
                    <h1>第二章</h1>
                </div>
                <div menu="function3" class="section">
                    <h1>第三章</h1>
                </div>
            </div>
        </div>
    </div>

    <script type="text/javascript" src="jquery-1.8.2.min.js"></script>
    <script type="text/javascript">

        window.onscroll = function(){
            var ws = $(window).scrollTop();

             if(ws > 50){
                    $('.catalog').addClass('fixed');
                }else{
                    $('.catalog').removeClass('fixed');
                }

            $('.content').children().each(function(){
                var offs = $(this).offset();      //offset表示当前标签到顶部的和左边的距离;
                var offTop = offs.top;
                // 当前标签离顶部高度 < 滚动条高度
                // 当前标签离顶部高度+ 当前标签的高度 > 滚动条高度
                var total = offTop + $(this).height();
                if(ws>offTop && total > ws){
                    // 如果滑轮到了底部,最后一个菜单增大
                    // 滑轮滚动的高度+window的高度 = 文档的高度

                    if($(window).scrollTop()+$(window).height() == $(document).height()){
                        $(".catalog").children(':last').css("fontSize", '48px').siblings().css('fontSize', '12px');
                    }else{
                        var t = $(this).attr('menu');
                        var target = 'div[auto-to="' + t +'"]';     //字符串拼接
                        $('.catalog').children(target).css("fontSize", '48px').siblings().css('fontSize', '12px');
                        return;
                    }

                }
            });
        };
    </script>
</body>
</html>

11、jQuery之文本操作(文档处理)

内部操作
    append    appendTo    preappendto  preappend


外部操作
   before     after    insertAfter    insertBefore


删除
     empty     remove

复制 clone

12、jQuery之事件

对于dom来说,注册事件两种方式:a、onclick,当点击标签的时候执行对应的函数;b、windows注册全局的函数;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <input type="button" value="添加" onclick="AddContent();"/>
    <div onclick="func()"></div>
    <div>
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <li>7</li>
        </ul>
    </div>
    <script src="jquery-1.8.2.min.js"></script>
    <script>
        function AddContent(){
            $('ul').append('<li>8</li>');
//            $('li:last').click(function(){
//                var temp = $(this).text();
//                alert(temp);
//            });
        }
        //window.xxc
        function func() {
        }

        // 当前文档准备就绪
        $(document).ready(function(){          //和$(function)执行效果一样
            //
        });
        $(function(){
            // 最基本的jQuery事件绑定
//            $('li').click(function(){
//                var temp = $(this).text();
//                alert(temp);
//            });
//            $('li').bind('click', function(){         /.bind和.click执行效果一样
//                var temp = $(this).text();
//                alert(temp);
//            });

            $('ul').delegate('li', 'click', function(){    //委托,一般在执行批量的时候使用
                    var temp = $(this).text();
                    alert(temp);
            })

        })


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

 13、Ajax请求

 Ajax全套地址:

http://www.cnblogs.com/wupeiqi/articles/5703697.html

1、找到特定的标签,并修改标签中的内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="l1">
        123
    </div>

    <script type="text/javascript" src="j1.js"></script>
    <script type="text/javascript">
//        var i = document.getElementById('l1')            /*有赋值*/,id有一个
//        var i = document.getElementsByName('l1');         // /*没有赋值*/,/*name可以有多个innertext,多个innertext不可以直接赋值*/
//        i.innerText = "456";
 //       var i = document.getElementsByName('l1');
  //      for (var item in i){        //循环可以赋值
//            i[item].innerText = "456";
        var i=document.getElementsByTagName('div')        //给所有的div标签赋值
        for (var item in i){
            i[item].innerText = "456"
        }
    </script>
</body>
</html>
document.getElementById、document.getElementsByName和document.getElementsByTagName

2、js应用css样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .red{
            background-color: red;
        }
    </style>
</head>
<body>
    <div id="l1">
        123
    </div>
    <script type="text/javascript" src="j1.js"></script>
    <script type="text/javascript">
       var i = document.getElementById('l1')   
       i.className = "red";
    </script>
</body>
</html>
View Code

3、Dom事件注册与执行

注册事件:将函数与事件进行绑定,注册到标签上来;
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .red{
            background-color: red;
        }
    </style>
</head>
<body>
    <div id="l1">
        123
    </div>
    <input type="button" onclick="edit();" value="修改" />
    <script type="text/javascript" src="j1.js"></script>
    <script type="text/javascript">
  
        function edit(){
            alert('123');
        }
    </script>
</body>
</html>
alert

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .red{
            background-color: red;
        }
    </style>
</head>
<body>
    <div id="l1">
        123
    </div>
    <input type="button" onclick="edit();" value="修改" />      <!--如果是ondblclick,那么需要连续点击两次才能应用对应的函数中的样式-->
    <input type="button" onmouseover="rollback();" value="恢复" />    <!--onmouseover表示鼠标移动到标签上面应用样式-->
    <script type="text/javascript" src="j1.js"></script>
    <script type="text/javascript">

        function edit(){
            //alert('123');
            var i = document.getElementById('l1');
            i.className = "red";
        }
        function rollback(){
            var i = document.getElementById('l1');
            i.className = "";
        }
    </script>
</body>
</html>
input button应用样式
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .red{
            background-color: red;
        }
    </style>
</head>
<body>
    <div id="l1">
        123
    </div>
    <input type="button" onclick="edit();" value="修改" />      <!--如果是ondblclick,那么需要连续点击两次才能应用对应的函数中的样式-->
    <input type="button" onmouseover="rollback();" value="恢复" />    <!--onmouseover表示鼠标移动到标签上面应用样式-->
    <script type="text/javascript" src="j1.js"></script>
    <script type="text/javascript">

/*        function edit(){
            //alert('123');
            var i = document.getElementById('l1');
            i.className = "red";
        }*/
        function edit(){        #注意
            var i = document.getElementsByName('l1');
            for(var item in i){
                i[item].className = "red";
            }
        }
        function rollback(){
            var i = document.getElementById('l1');
            i.className = "";
        }
    </script>
</body>
</html>


<!--注册事件:将函数与事件进行绑定,注册到标签上来;-->
易错点

4、页面加载和页面框加载

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .red{
            background-color: red;
        }
    </style>
</head>
<body>
    <div id="l1">
        123
    </div>
    <input type="button" onclick="edit();" value="修改" />      <!--如果是ondblclick,那么需要连续点击两次才能应用对应的函数中的样式-->
    <input type="button" onmouseover="rollback();" value="恢复" />    <!--onmouseover表示鼠标移动到标签上面应用样式-->
    <script type="text/javascript" src="j1.js"></script>
    <script type="text/javascript">
         window.onload = function () {           //页面内容加载完毕之后执行
             alert('db');
         }
         document.ready = function () {           //页面框架加载完毕之后执行
             alert('wawwww');
         }
/*        function edit(){
            //alert('123');
            var i = document.getElementById('l1');
            i.className = "red";
        }*/
        function edit(){
            var i = document.getElementsByName('l1');
            for(var item in i){
                i[item].className = "red";
            }
        }
        function rollback(){
            var i = document.getElementById('l1');
            i.className = "";
        }
    </script>
</body>
</html>


<!--注册事件:将函数与事件进行绑定,注册到标签上来;-->
View Code
 <body>
    <div name="l1" id="l1">
        123
    </div>
    <input type="button" onclick="edit();" value="修改" />      <!--如果是ondblclick,那么需要连续点击两次才能应用对应的函数中的样式-->
    <input type="button" onmouseover="rollback();" value="恢复" />    <!--onmouseover表示鼠标移动到标签上面应用样式-->
    <script type="text/javascript" src="j1.js"></script>
    <script type="text/javascript">


obj.className获取或者修改样式
       function rollback(){
            var i = document.getElementById('l1');
            console.log(i.className);
            i.className = "";
        }
获取或者修改样式
obj.getAttribute()获取属性

        function rollback(){
            var i = document.getElementById('l1');
//            console.log(i.className);
 //           i.className = "";
            var result= i.getAttribute('name');
            console.log(result);
            i.style.backgroundColor="pink";
        }
style对样式元素的修改
    <form action="https:www.sogou.com/web?">
        <input type="text" name="query"/>
        <input type="submit" name="submit"/>    #submit才会提交
        <input type="button" name="button"/>    #button不会提交
    </form>
   

    <form  id="form1" action="https:www.sogou.com/web?">
        <input type="text" name="query"/>
        <input type="submit" name="submit"/>
        <input type="button" onclick="submit_form();" name="button"/>
    </form>
    #让button可以提交
        function submit_form(){
            document.getElementById('form1').submit();
        } 
button提交表单
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .red{
            background-color: red;
        }
    </style>
</head>
<body>
    <div Charles="123" name="l1" id="l1">
        123
    </div>
    <form  id="form1" action="https:www.sogou.com/web?">
        <input type="text" name="query"/>
        <input type="submit" name="submit"/>
        <input type="button" onclick="submit_form();" name="button"/>
    </form>
    <script>
        function submit_form(){
           //document.getElementById('form1').submit();
            window.location.href="https://www.baidu.com";       /*点击button跳转*/
        }
    </script>
</body>
</html>
点击跳转到其他网页
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript">
    var result=confirm('是否继续?')
    console.log(result);
</script>
</body>
</html>
confrim

点击确定为true,点击去取消为false,一般不用,都是自己写的,主要是因为难看;

    function f1(){
        console.log('f1')
    }
    setInterval(f1,5000);      5秒钟
</script>
setInterval设定函数自动执行周期
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript">
/*    var result=confirm('是否继续?')
    console.log(result);*/
    function f1(){
        console.log('f1')
        //clearInterval(obj)          /*执行一次终止*/
    }
    obj = setInterval(f1,5000);
    setTimeout(f1,5000)      /*只执行一次*/
</script>
</body>
</html>
View Code

5、搜索框和跑马灯

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>欢迎领导莅临!</title>
    <script type="text/javascript">
        function Go(){
            var content=document.title;
            var firstChar=content.charAt(0)
            var sub = content.substring(1,content.length)
            document.title = sub+firstChar;
        }
        setInterval('Go()',1000);
    </script>
</head>
<body>

</body>
</html>
跑马灯

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        .gray{
            color: gray;
        }
        .black{
            color: black;
        }
    </style>
    <script type="text/javascript">
        function Enter(){
            var id=document.getElementById("tip");
            id.className = "black";
            if(id.value=='请输入关键字'|| id.value.trim()==''){
                id.value = ''
            }
        }
        function Leave(){
            var id =document.getElementById("tip");
            var val=id.value;
            if(val.length==0||id.value.trim()==''){
                id.value = '请输入关键字';
                id.className='gray';
            }else{
                id.className = 'black';
            }
        }
    </script>
</head>
<body>
    <input type="text" class="gray" id="tip" value="请输入关键字" onfocus="Enter();" onblur="Leave();" />
</body>
</html>
搜索框

 六、jQuery

核心:1、找到元素;2、操作元素;

 在使用jQuery之前必须先导入jQuery

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script type="text/javascript" src="jquery-2.2.3.js"></script>    <!--导入jquery-->
<script>
    $(function(){
        alert(123);
    });
</script>
</body>
</html>
页面框架加载完成之后执行function中的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div id="i1">123</div>
<div class="c1">1</div>
<div class="c1">2</div>
<div class="c1">3</div>
<div class="c1">4</div>
<script type="text/javascript" src="jquery-2.2.3.js"></script>    <!--导入jquery-->
<script>
    //当页面框架加载完成之后,加载该函数,$是jquery自动生成的对象
    $(function(){
        $('#i1').text(6789);           /*类似于document.getElementById()*/
        $('.c1').eq(0).text('4444');    /*将class为c1的标签的第一个替换为4444,数字从0开始*/
    });
</script>
</body>
</html>
View Code

属性和样式

作业:
后台管理
    登录
       用户输入是否为空,alert
       $('#username').val()
    管理
         布局页面
                  左侧菜单
                            display:none
                            找到所有的兄弟标签,children
                 右侧有内容
                      跑马灯
                      搜索框
                      返回顶部
                            (tab菜单,事件轴)
作业
jQuery:
    -找:
        选择器
        筛选
    -操作
        属性
        css
        文档
    -其他
        事件
        Ajax请求
        JSON
        ....

====================
选择器
====================
-#xx
    <div id="t1"></div>
    $("#t1")
-.xx
    <div class="t2"></div>
    $('.t2')
-标签
    <p>abcd</p>
    <p>abcd</p>
    $('p')
View Code
========================
-空格
    <div id='tt'>
        <div   class='t3'>
            <p></p>
        </div>
    </div>
 
    $("$tt p")

-逗号
    <p class='t5'></p>
    <div class='t5'></div>
    <span></span>
    <a></a>
    $('.t5,a')
View Code

2、左侧菜单

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .hide{
            display: none;
        }
    </style>
</head>
<body>
    <div>
        <div>
            <div id="m1" onclick="Change(1);">菜单一</div>
            <div>
                <div>1</div>
                <div>2</div>
                <div>3</div>
            </div>
        </div>
        <div>
            <div id="m2" onclick="Change(2);">菜单二</div>
            <div class="hide">
                <div>11</div>
                <div>22</div>
                <div>33</div>
            </div>
        </div>
        <div>
            <div id="m3" onclick="Change(3);">菜单三</div>
            <div  class="hide">
                <div>111</div>
                <div>222</div>
                <div>333</div>
            </div>
        </div>
    </div>

    <script type="text/javascript" src="jquery-2.2.3.min.js"></script>
    <script type="text/javascript">
        function Change(arg){
            //找到到底点击了哪一个
            if(arg==1){
                var menu = $('#m1')
            }else if(arg==2){
                var menu = $('#m2')
            }else{
                var menu = $('#m3')
            }
            console.log(menu.text());
        }
    </script>
</body>
</html>
鼠标点击菜单展开,默认为隐藏
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .hide{
            display: none;
        }
    </style>
</head>
<body>
    <div>
        <div>
            <div onclick="Change(this);">菜单一</div>
            <div class="content hide">
                <div>1</div>
                <div>2</div>
                <div>3</div>
            </div>
        </div>
        <div>
            <div onclick="Change(this);">菜单二</div>
            <div class="content hide">
                <div>11</div>
                <div>22</div>
                <div>33</div>
            </div>
        </div>
        <div>
            <div onclick="Change(this);">菜单三</div>
            <div  class="content hide">
                <div>111</div>
                <div>222</div>
                <div>333</div>
            </div>
        </div>
    </div>
    <script type="text/javascript" src="jquery-2.2.3.min.js"></script>
    <script type="text/javascript">
        function Change(arg){
            //找到到底点击了哪一个
          //var t = $(arg).text()                         //$(arg)表示当前点击的标签,如果存在多个标签,可以使用this,替换上面的if else
           // console.log(t)                              //点击菜单之后:一、找到下一个标签,移除hide
                                                                       //二、找到其他菜单,内容影藏,添加hide
            $(arg).next().removeClass("hide")                       //找到当前标签的父标签
                                                                             //所有父亲标签的所有的兄弟标签
            $(arg).parent().siblings().find('.content').addClass('hide');
        }
    </script>
</body>
</html>
下拉菜单影藏和展示

 3、jQuery筛选器

筛选:
    选择器:第三排所有人
        筛选器:第三排的第三个人
原理

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <table>
        <tbody>
            <tr>
                <td>1</td>
                <td>2</td>
                <td>3</td>
                <td onclick="get_prev(this)">编辑</td>
            </tr>
        </tbody>
    </table>
    <script type="text/javascript" src="jquery-2.2.3.min.js"></script>
    <script type="text/javascript">
        function get_prev(arg){
            //$(arg).siblings()的所有兄弟
            //循环多个标签中的每一个标签,每一个标签被执行时都会执行ma内部的函数
            //将所有的返回值封装到一个数组(列表)中
            //返回列表
            var list=$(arg).siblings().map(function(){
                //当前循环的标签
                return $(this).text();
            });
            console.log(list,list[0],list[1],list[2]);
        }
    </script>
</body>
</html>
map

查找:

      var a= [11, 22, 33, 44]
            $.each(a, function(item){    //循环所有的数据,去除每一个数据的内容
                console.log(a[item])
        }
            );
            var d = {'k1': 'v1','k2':'v2'};
            $.each(d, function (key, value) {
                console. log(key,value);
            });
js数组和字典的循环

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <table border="1">
        <tbody>
            <tr>
                <td>1</td>
                <td>2</td>
                <td>3</td>
                <td onclick="GetPrev(this)">编辑</td>
            </tr>
            <tr>
                <td>111</td>
                <td>222</td>
                <td>333</td>
                <td onclick="GetPrev(this)">编辑</td>
            </tr>
            1、弹出框
            2、取出表格数据
            3、将数据填充到弹出框
            <tr>
                <td>11</td>
                <td>22</td>
                <td>33</td>
                <td onclick="GetPrev(this)">编辑</td>
            </tr>
        </tbody>
    </table>
    <style>
        .model{
            position: fixed;
            left: 50%;
            top: 50%;
             400px;
            height: 300px;
            background-color: #dddddd;
            margin-left: -200px;                   /*往左移*/
            margin-top: -150px;                     /*往顶部移*/
        }
        .hide{
            display: none;
        }
    </style>
    <div class="model">
        <form action="" method="get">
            <p>主机名:<input type="text" id="hostname" /></p>
            <p>IP:<input type="text" id="ip" /></p>
            <p>端口:<input type="text" id="port" /></p>

            <input type="submit" value="提交"/>             <!--submit提交的必须为表单,所以必须将需要提交的内容加入的表单内部-->
            <input type="submit" value="取消"/>
        </form>
    </div>
    <script type="text/javascript" src="jquery-2.2.3.min.js"></script>
    <script type="text/javascript">
/*        function get_prev(arg){
            //$(arg).siblings()的所有兄弟
            //循环多个标签中的每一个标签,每一个标签被执行时都会执行ma内部的函数
            //将所有的返回值封装到一个数组(列表)中
            //返回列表
            var list=$(arg).siblings().map(function(){
                //当前循环的标签
                return $(this).text();
            });
            console.log(list,list[0],list[1],list[2]);
        }*/
        /*
        编辑当前行*/
        function GetPrev(ths) {
            /*            <td>11</td>
            <td>22</td>
            <td>33</td>*/
            $(ths).prevAll()
            /*所有的数据*/
            var a= [11, 22, 33, 44]
            $.each(a, function(item){    //循环所有的数据,去除每一个数据的内容
                console.log(a[item])
        }
            );
            var d = {'k1': 'v1','k2':'v2'};
            $.each(d, function (key, value) {
                console. log(key,value);
            });
        }
    </script>
</body>
</html>
编辑变革内容弹出框设计
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>12<a>百度</a>3</p>
    <script src="jquery-2.2.3.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        console.log($('p').html());
        console.log($('p').text());
    </script>
</body>
</html>
html和text的区别

如果内容为空,不替换,如果不为空,替换;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <input type="button" onclick="Toggle();" />
    <table border="1">
        <tbody>
            <tr>
                <td>1</td>
                <td>2</td>
                <td>3</td>
                <td onclick="GetPrev(this)">编辑</td>
            </tr>
            <tr>
                <td>111</td>
                <td>222</td>
                <td>333</td>
                <td onclick="GetPrev(this)">编辑</td>
            </tr>
<!--        1、弹出框
            2、取出表格数据
            3、将数据填充到弹出框-->
            <tr>
                <td>11</td>
                <td>22</td>
                <td>33</td>
                <td onclick="GetPrev(this)">编辑</td>
            </tr>
        </tbody>
    </table>
    <style>
        .model{
            position: fixed;
            left: 50%;
            top: 50%;
             400px;
            height: 300px;
            background-color: #dddddd;
            margin-left: -200px;                   /*往左移*/
            margin-top: -150px;                     /*往顶部移*/
        }
        .hide{
            display: none;
        }
    </style>
    <div id="dialog" class="model hide">
        <form action="" method="get">
            <p>主机名:<input type="text" id="hostname"  value="123123"/></p>
            <p>IP:<input type="text" id="ip" /></p>
            <p>端口:<input type="text" id="port" /></p>

            <input type="submit" value="提交"/>             <!--submit提交的必须为表单,所以必须将需要提交的内容加入的表单内部-->
            <input type="button" onclick="Cancel();" value="取消"/>
        </form>
    </div>
    <script type="text/javascript" src="jquery-2.2.3.min.js"></script>
    <script type="text/javascript">
/*        function get_prev(arg){
            //$(arg).siblings()的所有兄弟
            //循环多个标签中的每一个标签,每一个标签被执行时都会执行ma内部的函数
            //将所有的返回值封装到一个数组(列表)中
            //返回列表
            var list=$(arg).siblings().map(function(){
                //当前循环的标签
                return $(this).text();
            });
            console.log(list,list[0],list[1],list[2]);
        }*/
        /*
        编辑当前行*/
/*        function GetPrev(ths) {
            /!*            <td>11</td>
            <td>22</td>
            <td>33</td>*!/
            var list = [];
            $(ths).prevAll()
            /!*所有的数据*!/
            var a= [11, 22, 33, 44]
            $.each(a, function(item){    //循环所有的数据,取出每一个数据的内容
                console.log(a[item])
        }
            );
            var d = {'k1': 'v1','k2':'v2'};
            $.each(d, function (key, value) {
                console. log(key,value);
            });
        }*/
        function GetPrev(ths){
            var list = [];
            $.each($(ths).prevAll(), function (i) {
                var item = $(ths).prevAll()[i];
                var text = $(item).text();
                list.push(text);
            });
            var new_list = list.reverse();
            $("#hostname").val(new_list[0]);
            $("#ip").val(new_list[1]);
            $("#port").val(new_list[2]);

            $('#dialog').removeClass('hide');
        }
        function Cancel(){
            $("#dialog").addClass('hide');
        }
        function Toggle(){
            $("#dialog").toggleClass('hide');     /*切换,第一次点击出现,再点击隐藏*/
        }
    </script>
</body>
</html>
编辑当前行内容,并提交或取消
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>12<a>百度</a>3</p>
   <!-- <input type="text" id="name" />-->
    <!--<textarea id="name"></textarea>-->
    <select id="name">
        <option value="1">男</option>
        <option value="2">女</option>
    </select>
    <input type="button" onclick="GetValue();" />
    <script src="jquery-2.2.3.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        function GetValue(){
            //var i = $('#name').val();        #获取值
            //console.log(i);
            $('#name').val(2);
        }
    </script>
</body>
</html>
val获取或者设置input、select或textarea的值
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <input type="button"  onclick="CheckAll();" value="全选" />
    <input type="button" onclick="CheckReverse();"value="反选" />
    <input type="button" onclick="CheckCancel();" value="取消" />

    <table border="1">
        <thead></thead>
        <tbody id="tb1">
            <tr>
                <td><input type="checkbox" /></td>
                <td>11</td>
            </tr>
            <tr>
                <td><input type="checkbox" /></td>
                <td>22</td>
            </tr>
            <tr>
                <td><input type="checkbox" /></td>
                <td>33</td>
            </tr>
        </tbody>
    </table>
    <script src="jquery-2.2.3.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        function CheckAll(){
            //$('#tb1').find(':checkbox').attr('checked','checked')    atttr是对于所有的标签属性生效的
            $('#tb1').find(':checkbox').prop('checked',true);       //prop是对于checked而生的
        }
        function CheckReverse(){
            //找,如果选中,取消,未选中,选中
            $('#tb1').find(':checkbox').each(function(){
                //$(this) =每一个复选框
                //$(this).prop()如果选中,true,否则false
                //attr 如果选中,checked,checked=checked
                if($(this).prop('checked')){
                    $(this).prop('checked',false);
                }else {
                    $(this).prop('checked',true);
                }
            })
        }
        function CheckCancel(){
            //$('#tb1').find(':checkbox').removeAttr('checked');
            $('#tb1').find(':checkbox').prop('checked',false);
        }
    </script>
</body>
</html>
checkbox全选,反选和取消

 七、CSS

    -css

        <div style="color:red;"></div>

        $('div').css('color','red')

        $('div').css({'color':'red',})

    -scrolltop

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body style="margin: 0 auto;">
    <div style="height: 1500px;">
    </div>
    <div id="i1">asdf</div>
    <div style="padding: 50px;position: relative;">
        <div id="i2">a</div>
    </div>

    <script src="jquery-2.2.3.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        //var off = $('#i2').position();                  /*position是针对父标签的偏移*/
        var off=$('#i2').offset();                      //offset是针对整个页面的偏移
        console.log(off);
    </script>



</body>
</html>
offset和position
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div >
        <div id="currentPosition" style="position: fixed;top: 0px;right: 0px;"></div>
        <div>
            <div class="chapter" style="height: 500px;">
                <h1>第一张</h1>
            </div>

            <div  class="chapter" style="height: 1500px;">
                <h1>第二张</h1>
            </div>

            <div class="chapter" style="height: 2500px">
                <h1>第三张</h1>
            </div>
        </div>
    </div>
    <script src="jquery-2.2.3.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function(){
            $(window).scroll(function(){                     //滚动条的时候触发事件
                console.log(1);
                //滚动条的高度与章节的高度作对比
                var scroll_top = $(window).scrollTop();         //滚动的高度
                var list = [];
                $.each($('.chapter'),function(i){
                    //var chapter_count = $('.chapter').length;
                    var current_height = $($('.chapter')[i]).offset().top;       //当前章节的高度
                    list.push(current_height);
                })
                $.each(list,function(i){
                    if (scroll_top+$(window).height()==$(document).height()){     //滚动的高度+窗体的高度==整个文档的高度
                        $('#currentPosition').text($('.chapter').last().text());    //取最后一章内容显示在右上角,#currentPosition取右上角内容
                        return
                    }
                    if (scroll_top > list[i]){
                        $('#currentPosition').text($($('.chapter')[i]).text());
                        return
                    }
                })
            })
        })
    </script>
</body>
</html>
滚动章节

八、Ajax请求

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <input type="button" onclick="AjaxRequest();"/>
    <script src="jquery-2.2.3.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        //本地ajax请求
        function AjaxRequest(){
            $.ajax({
                url:'',
                type:'GET',
                data:{'k1':'v1','k2':'v2'},
                success:function(data){
                    //当请求成功,并从远程获取返回值
                    console.log(data);
                },
                error:function(){

                }
            })
        }
    </script>
</body>
</html>
本地ajax请求
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="button" onclick="" value="跨域Ajax" />
<div id="container"></div>
<script src="jquery-2.2.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
    function AjaxRequest(){
        $.ajax({
            url:'http://',
            type:'GET',
            dataType:'jsonp',
            jsonpCallback:'list',
            success:function(data){
                var item = data.data[i];
                var str = "<p>"+item.week+"</p>";
                $('#container').append(str);
                $.each(item.list,function(j){

                })
            }
        })

    }
</script>
</body>
</html>
跨域ajax请求 不全
1、点击进入编辑模式
    全选:table中循环每一个tr,然后循环table中的每一个tr,再去tr中检查checkbox是否已经选中
    如果已经选中,把tr中的文件替换成<input value='当前tr文本中的内容' />
    var old=$(xx).text();
    var temp="<input value='"+old"' />"
    $(xx).html(temp)
    取消:         <input value='当前tr文本的内容' />
                        当前tr文本的内容
作业思路

 九、前段内容前瞻

HTML

CSS

JavaScript

DOM

JQuery
        -选择器
        -筛选
        -CSS
        -属性
        -文档处理
        -事件
        -Ajax (Django)
        -扩展
        -基本操作

Bootstrap
bxSlider
JQuery validate


====================================
web框架
Django

====================================
angularjs
reactjs
View Code
全选    反选    取消    进入编辑模式
作业思路

 十、jQuery文档处理

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="i2" style="background-color: red;"></div>
    <div id="search_conditions">
        <div class="condition">
            <a onclick="AddCondition(this,'#search_conditions')">+</a>
            <input />
        </div>
    </div>
    <script src="jquery-2.2.3.min.js"></script>
    <script>
        function AddCondition(ths,container){
            //clone condition div
            //再把colne的div追加到search_conditions下面
            var cp = $(ths).parent().clone();
            //$('#search_conditions').append(cp);
            cp.children(':first').text('-').attr('onclick',"RemoveCondition(this,'search_conditions')");
            cp.appendTo('#search_conditions')
        }
        function RemoveCondition(ths,container){
            $(ths).parent().remove();

        }
    </script>
</body>
</html>
动态增加或减少输入框

十一、jQuery事件

onclick、click、bind;

select改变触发事件,使用change;

十二、jQuery扩展方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <script src="jquery-2.2.3.min.js"></script>
    <script src="extends.js"></script>    //也可以将下面的js代码放入到js文件中
    <script>
        $.extend({
            "charles":function(){
                return 123
            }
        });
        var ret = $.charles();
        console.log(ret);
    </script>

</body>
</html>
View Code
$.extend({
    "charles":function(){
        return 123
    }
});

(function(arg){                   //jQuery自执行方法,退浆使用
    arg.extend({
        "wupwiqi":function(){
            return 444;
        }
    })
})(jQuery);
View Code

关于JavaScript、Dom、JQuery查看  http://www.cnblogs.com/wupeiqi/articles/4457274.html

十三、Bootstrap

Bootstrap的响应式布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        @media screen AND (min- 768px){
            .body{
                background-color: red;
            }
        }
    </style>
</head>
<body>
    <div class="body">ddddd</div>                 //当页面宽度小于768时,背景颜色消失
</body>
</html>
View Code

如何使用bootstrap

1、下载bootstrap
2、导入
    css/min.css
    js /min.js

3、<div class="..."></div>    //具体看官网文档
View Code

css之伪类:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .c1:before{
            content: "SB";
        }
    </style>
</head>
<body>
<div class="c1">Charles</div>
</body>
</html>

after或者before是伪类,before将sb添加到charles前面,在bootstrap中伪类的内容设置为图标的编码;

原文地址:https://www.cnblogs.com/cqq-20151202/p/5360713.html