zoukankan      html  css  js  c++  java
  • Jquery

    'use strict';
    // 如果浏览器支持strict模式,
    // 下面的代码将报ReferenceError错误:
    abc = 'Hello, world';
    alert(abc);
    if (confirm() { //如果点“是”

    } else {

    }
    xm['middle-school']
    对象内部的成员命中有- 那么必须加引号 调用该成员属性 必须用a['s-c'] 而不是a.sc

    ////////////////////////////////////////////////////////////////////////////////
    typeof true; // 'boolean' 看值的类型
    typeof Math.abs; // 'function'
    typeof null; // 'object'
    JavaScript把null、undefined、0、NaN和空字符串'' ""视为false,其他值一概视为true。
    var now = new Date();
    now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
    now.getFullYear(); // 2015, 年份
    now.getMonth(); // 5, 月份,注意月份范围是0~11,5表示六月
    now.getDate(); // 24, 表示24号
    now.getDay(); // 3, 表示星期三
    now.getHours(); // 19, 24小时制
    now.getMinutes(); // 49, 分钟
    now.getSeconds(); // 22, 秒
    now.getMilliseconds(); // 875, 毫秒数
    now.getTime(); // 1435146562875, 以number形式表示的时间戳
    var d = new Date(2015, 5, 19, 20, 15, 30, 123);
    d; // Fri Jun 19 2015 20:15:30 GMT+0800 (CST)
    或者
    var d = Date.parse('2015-06-24T19:49:22.875+08:00');
    d; // 1435146562875
    但它返回的不是Date对象,而是一个时间戳。不过有时间戳就可以很容易地把它转换为一个Date:
    var d = new Date(1435146562875);
    d; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
    Date对象表示的时间总是按浏览器所在时区显示的,不过我们既可以显示本地时间,也可以显示调整后的UTC时间:
    var d = new Date(1435146562875);
    d.toLocaleString(); // '2015/6/24 下午7:49:22',本地时间(北京时区+8:00),显示的字符串与操作系统设定的格式有关
    d.toUTCString(); // 'Wed, 24 Jun 2015 11:49:22 GMT',UTC时间,与本地时间相差8小时
    ////////////////////////////////////////////////////////////////////////////////
    d 1个数字
    w 一个字母或数字
    s 匹配1个空格,包括Tab
    . 匹配任意字符,但不能匹配换行符
    * 任意个字符
    + 至少一个字符
    ? 0个或1个字符
    {n} n个字符
    {n,m} n到m个字符
    [] 范围匹配。
    - 特殊字符要用进行转义。
    | 或的关系
    ^ 表示行的开头,^d表示必须以数字开头
    $ 表示行的结束,w$表示必须以数字或字母结束。
    var re1 = /ABC-001/;
    var re2 = new RegExp('ABC\-001');
    判断是否匹配用test
    var re = /^d{3}-d{3,8}$/;
    re.test('010-12345'); // true
    http://www.sojson.com/regex/generate 常用的正则表达式
    ////////////////////////////////////////////////////////////////////////////////
    JSON是JavaScript Object Notation的缩写,它是一种数据交换格式。
    JSON.stringify(xiaoming); 格式化
    JSON.parse(ss); 反格式化
    把json字符串变成javascript对象
    JSON.parse('{"name":"小明","age":14}', function (key, value) {
    // 把number * 2:
    if (key === 'name') {
    return value + '同学';
    }
    return value;
    }); // Object {name: '小明同学', age: 14}

    函数的写法
    function abs(x) {
    if (x >= 0) {
    return x;
    } else {
    return "asdfasdfas";
    }
    }
    var abs = function (x) {
    if (x >= 0) {
    return x;
    } else {
    return -x;
    }
    };
    无名字如上 使用abs() 调用
    console.log('hello,延时器执行');
    window.setTimeout方法
    setInterval(hello,5000);//5秒后执行 '定时器执行'
    window.clearTimeout(id); 取消
    定义在对象内部的函数叫方法。
    var xiaoming = {
    name: '小明',
    birth: 1990,
    age: function () {
    var y = new Date().getFullYear();
    return y - this.birth;
    }
    };
    ///////////////////////////////////////////////////////////////////////////////////////
    bom对象:
    alert('window inner size: ' + window.innerWidth + ' x ' + window.innerHeight);全屏下是分辨率;
    window.open打开窗口
    screen对象表示屏幕的信息
    常用的属性有:
    - screen.width:屏幕宽度,以像素为单位;
    - screen.height:
    屏幕高度,以像素为单位;
    - screen.colorDepth:返回颜色位数,如8、16、24。
    表示浏览器对象,最常用的属性包括:

    - navigator.appName:浏览器名称;
    - navigator.appVersion:浏览器版本;
    - navigator.language:浏览器设置的语言;
    - navigator.platform:操作系统类型;
    - navigator.userAgent:浏览器设定的User-Agent字符串。
    location对象表示当前页面的URL信息:
    location.protocol; // 'http'
    location.host; // 'www.example.com'
    location.port; // '8080'
    location.pathname; // '/path/index.html'
    location.search; // '?a=1&b=2'
    location.hash; // 'TOP'
    if (confirm('重新加载当前页' + location.href + '?')) {
    location.reload();
    } else {
    location.assign('/discuss'); // 设置一个新的URL地址
    }
    ////////////////////////////////////////////////////////////////////////////////////
    document对象:
    document.getElementById(); 对象
    menu.tagName; // 'DL'
    getElementsByClassName('cs'); 集合
    getElementsByTagName('ul');集合
    JavaScript可以通过document.cookie读取到当前页面的Cookie:
    - 更新:更新该DOM节点的内容,相当于更新了该DOM节点表示的HTML的内容;
    - 遍历:遍历该DOM节点下的子节点,
    以便进行进一步操作;
    - 添加:在该DOM节点下新增一个子节点,相当于动态增加了一个HTML节点;
    - 删除:将该节点从HTML中删除,
    相当于删掉了该DOM节点的内容以及它包含的所有子节点。
    window.onload=function(){
    在这写dom选择器代码
    及操作dom的代码。
    }
    1、获取DOM
    第一种
    document.getElementById()
    document.getElementsByTagName()
    以及CSS选择器
    document.getElementsByClassName()
    第二种
    // 通过querySelector获取ID为q1的节点:
    var q1 = document.querySelector('#q1');
    // 通过querySelectorAll获取q1节点内的符合条件的所有节点:
    var ps = q1.querySelectorAll('div.highlighted > p');
    p是一个对象
    p.innerHTML = 'ABC <span style="color:red">RED</span> XYZ';
    第二种是修改innerText或textContent属性,这样可以自动对字符串进行HTML编码,保证无法设置任何HTML标签:
    HTML被自动编码,无法设置一个<script>节点:
    修改CSS也是经常需要的操作。DOM节点的style属性对应所有的CSS,可以直接获取或设置。
    因为CSS允许font-size这样的名称,但它并非JavaScript有效的属性名,
    所以需要在JavaScript中改写为驼峰式命名fontSize:
    p.style.fontSize = '20px';
    3、更新DOM
    一个是使用appendChild,把一个子节点添加到父节点的最后一个子节点
    更多的时候我们会从零创建一个新的节点,然后插入到指定位置:
    list = document.getElementById('list'),
    haskell = document.createElement('p');
    haskell.id = 'haskell';
    haskell.innerText = 'Haskell';
    list.appendChild(haskell);
    创建一个对象
    var d = document.createElement('style');
    d.setAttribute('type', 'text/css');
    d.innerHTML = 'p { color: red }';
    document.getElementsByTagName('head')[0].appendChild(d);
    2.2 如果我们要把子节点插入到指定的位置怎么办?可以使用parentElement.insertBefore(newElement, referenceElement);,
    子节点会插入到referenceElement之前。
    var
    list = document.getElementById('list'),
    ref = document.getElementById('python'),
    haskell = document.createElement('p');
    haskell.innerText = 'Haskell';
    list.insertBefore(haskell, ref );
    4、删除DOM
    // 拿到待删除节点:
    var self = document.getElementById('to-be-removed');
    // 拿到父节点:
    var parent = self.parentElement;
    // 删除:
    var removed = parent.removeChild(self);
    removed === self; // true
    捕获型事件
    var div2 = document.getElementById('div2');
    div2.addEventListener('click', alertID, true);
    在节点上addEventListener('click', 出发后会发生的行为, true);
    冒泡型事件
    <p onclick="Add('p事件触发<br />','p')" style="background:#c00;">点击</p>
    在标签上onclick='方法'
    onclick事件 onchange事件 onselect onLoad(图像或页面结束载入时产生) onmouseover和onmouseout
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    使用jquery
    1、从http://www.jq22.com/jquery-info122下载并解压至项目的js目录
    <script src="jquery.js"></script>
    <script>
    $(function () {
    alert('jQuery版本:' + $.fn.jquery);
    });
    </script>
    //三种写法
    $(document).ready(function);
    $().ready(function);
    $(function)
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    基本选择器(6个)
    1、按ID查找
    // 查找<div id="abc">:
    var div = $('#abc');
    jQuery的选择器不会返回undefined或者null
    jQuery对象和DOM对象之间可以互相转化:
    var div = $('#abc'); // jQuery对象
    var divDom = div.get(0); // 假设存在div,获取第1个DOM元素
    var another = $(divDom); // 重新把DOM包装为jQuery对象
    2、按tag查找
    var ps = $('p'); // 返回所有<p>节点
    ps.length; // 数一数页面有多少个<p>节点
    3、按class查找
    var a = $('.red'); // 所有节点包含`class="red"`都将返回
    // 例如:
    // <div class="red">...</div>
    // <p class="green red">...</p>
    4、按属性查找
    一个DOM节点除了id和class外还可以有很多属性,很多时候按属性查找会非常方便,比如在一个表单中按属性来查找:
    var email = $('[name=email]'); // 找出<??? name="email">
    var passwordInput = $('[type=password]'); // 找出<??? type="password">
    var a = $('[items="A B"]'); // 找出<??? items="A B">
    当属性的值包含空格等特殊字符时,需要用双引号括起来。
    按属性查找还可以使用前缀查找或者后缀查找:
    var icons = $('[name^=icon]'); // 找出所有name属性值以icon开头的DOM
    // 例如: name="icon-1", name="icon-2"
    var names = $('[name$=with]'); // 找出所有name属性值以with结尾的DOM
    // 例如: name="startswith", name="endswith"
    5、组合查找
    组合查找就是把上述简单选择器组合起来使用。如果我们查找$('[name=email]'),很可能把表单外的也找出来,
    但我们只希望查找,就可以这么写:
    var emailInput = $('input[name=email]'); // 不会找出<div name="email">
    同样的,根据tag和class来组合查找也很常见:
    var tr = $('tr.red'); // 找出<tr class="red ...">...</tr>
    6、多项选择器
    多项选择器就是把多个选择器用,号组合起来一块选:
    $('p,div'); // 把<p>和<div>都选出来
    $('p.red,p.green'); // 把<p class="red">和<p class="green">都选出来
    要注意的是,选出来的元素是按照它们在HTML中出现的顺序排列的,而且不会有重复元素。
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    层级选择器
    如果两个DOM元素具有层级关系,就可以用$('ancestor descendant')来选择,层级之间用空格隔开。例如:
    $('div.testing li.lang-javascript'); // [<li class="lang-javascript">JavaScript</li>]
    子选择器
    子选择器$('parent>child')类似层级选择器,但是限定了层级关系必须是父子关系,
    $('ul.lang>li.lang-javascript'); // 可以选出[<li class="lang-javascript">JavaScript</li>]
    过滤器(Filter)
    过滤器一般不单独使用,它通常附加在选择器上,帮助我们更精确地定位元素。观察过滤器的效果:
    $('ul.lang li'); // 选出JavaScript、Python和Lua 3个节点

    $('ul.lang li:first-child'); // 仅选出JavaScript
    $('ul.lang li:last-child'); // 仅选出Lua
    $('ul.lang li:nth-child(2)'); // 选出第N个元素,N从1开始
    $('ul.lang li:nth-child(even)'); // 选出序号为偶数的元素
    $('ul.lang li:nth-child(odd)'); // 选出序号为奇数的元素
    表单相关
    针对表单元素,jQuery还有一组特殊的选择器:
    :input: 可以选择<input>,<textarea>,<select>和<button>;
    :file: 可以选择<input type="file">,和input[type=file]一样;
    :checkbox: 可以选择复选框,和input[type=checkbox]一样;
    :radio: 可以选择单选框,和input[type=radio]一样;
    :focus: 可以选择当前输入焦点的元素,例如把光标放到一个<input>上,用$('input:focus')就可以选出;
    :checked: 选择当前勾上的单选框和复选框,用这个选择器可以立刻获得用户选择的项目,
    如$('input[type=radio]:checked');
    :enabled: 可以选择可以正常输入的<input>、<select>
    等,也就是没有灰掉的输入;
    :disabled: 和:enabled正好相反,选择那些不能输入的。
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    1.修改Text和HTML

    jQuery对象的text()和html()方法分别获取节点的文本和原始HTML文本,例如,如下的HTML结构:

    无参数调用text()是获取文本,传入参数就变成设置文本,HTML也是类似操作,自己动手试试:
    j2.text('JavaScript & ECMAScript');
    2.修改CSS
    $('#test-css li.dy>span').css('background-color', '#ffd351').css('color', 'red');
    如果页面中已经有个一个class
    $('#test-css li.dy>span').addClass('highlight');
    3.显示和隐藏DOM
    var a = $('a[target=_blank]');
    a.hide(); // 隐藏
    a.show(); // 显示
    注意,隐藏DOM节点并未改变DOM树的结构,它只影响DOM节点的显示。这和删除DOM节点是不同的。
    4.获取DOM信息
    利用jQuery对象的若干方法,我们直接可以获取DOM的高宽等信息,而无需针对不同浏览器编写特定代码:
    // 浏览器可视窗口大小:
    $(window).width(); // 800
    $(window).height(); // 600

    // HTML文档大小:
    $(document).width(); // 800
    $(document).height(); // 3500

    // 某个div的大小:
    var div = $('#test-div');
    div.width(); // 600
    div.height(); // 300
    div.width(400); // 设置CSS属性 400px,是否生效要看CSS是否有效
    div.height('200px'); // 设置CSS属性 height: 200px,是否生效要看CSS是否有效
    attr()和removeAttr()方法用于操作DOM节点的属性:
    // <div id="test-div" name="Test" start="1">...</div>
    var div = $('#test-div');
    div.attr('data'); // undefined, 属性不存在
    div.attr('name'); // 'Test'
    div.attr('name', 'Hello'); // div的name属性变为'Hello'
    div.removeAttr('name'); // 删除name属性
    div.attr('name'); // undefined
    6.操作表单
    对于表单元素,jQuery对象统一提供val()方法获取和设置对应的value属性:
    input.val(); // 'test'
    input.val('abc@example.com'); // 文本框的内容已变为abc@example.com
    select.val(); // 'BJ'
    select.val('SH'); // 选择框已变为Shanghai
    textarea.val(); // 'Hello'
    textarea.val('Hi'); // 文本区域已更新为'Hi'
    7、修改DOM结构
    要添加新的DOM节点,除了通过jQuery的html()这种暴力方法外,还可以用append()方法,例如:
    首先要拿到ul节点:然后,调用append()传入HTML片段: ul.append('<li><span>Haskell</span></li>');
    除了接受字符串,append()还可以传入原始的DOM对象,jQuery对象和函数对象:
    // 创建DOM对象:
    var ps = document.createElement('li');
    ps.innerHTML = '<span>Pascal</span>';
    // 添加DOM对象:
    ul.append(ps);
    // 添加jQuery对象:
    ul.append($('#scheme'));
    // 添加函数对象:
    ul.append(function (index, html) {
    return '<li><span>Language - ' + index + '</span></li>';
    });
    传入函数时,要求返回一个字符串、DOM对象或者jQuery对象。因为jQuery的append()可能作用于一组DOM节点,
    只有传入函数才能针对每个DOM生成不同的子节点。


    append()把DOM添加到最后,prepend()则把DOM添加到最前。

    要删除DOM节点,拿到jQuery对象后直接调用remove()方法就可以了。
    如果jQuery对象包含若干DOM节点,实际上可以一次删除多个DOM节点:
    var li = $('#test-div>ul>li');
    li.remove(); // 所有<li>全被删除
    jQuery能够绑定的事件主要包括:

    鼠标事件

    click: 鼠标单击时触发;


    dblclick:鼠标双击时触发;


    mouseenter:鼠标进入时触发;


    mouseleave:鼠标移出时触发;


    mousemove:鼠标在DOM内部移动时触发;


    hover:鼠标进入和退出时触发两个函数,相当于mouseenter加上mouseleave。


    键盘事件

    键盘事件仅作用在当前焦点的DOM上,通常是<input>和<textarea>。


    keydown:键盘按下时触发;


    keyup:键盘松开时触发;


    keypress:按一次键后触发。


    其他事件

    focus:当DOM获得焦点时触发;


    blur:当DOM失去焦点时触发;


    change:当、或的内容改变时触发;


    submit:当``提交时触发;


    ready:当页面被载入并且DOM树完成初始化后触发。

    写法var a = $('#test-link');
    a.on('click', function () {
    alert('Hello!');
    });
    a.click(function () {
    alert('Hello!');
    });
    取消绑定:通过off('click',function)实现。
    function hello() {
    alert('hello!');
    }

    a.click(hello); // 绑定事件

    // 10秒钟后解除绑定:
    setTimeout(function () {
    a.off('click', hello);
    }, 10000);
    内置动画 show / hide/toggle
    //隐藏
    $('#test-form').hide(3000);

    //显示
    setTimeout(function(){
    $('#test-form').show(2000);
    },3000);

    $('#test-form').toggle(1000);
    $('#test-form').toggle(1500);
    slideUp / slideDown/slideToggle
    $('#test-form').slideUp('quick');
    $('#test-form').slideDown('quick');
    $('#test-form').slideToggle('middle');
    fadeIn / fadeOut
    var div = $('#test-fade');
    div.fadeOut('slow'); // 在0.6秒内淡出
    animate
    var div = $('#test-animate');
    div.animate({
    opacity: 0.25,
    '256px',
    height: '256px'
    }, 3000, function () {
    console.log('动画已结束');
    // 恢复至初始状态:
    $(this).css('opacity', '1.0').css('width', '128px').css('height', '128px');
    });。

  • 相关阅读:
    UVa 1349 (二分图最小权完美匹配) Optimal Bus Route Design
    UVa 1658 (拆点法 最小费用流) Admiral
    UVa 11082 (网络流建模) Matrix Decompressing
    UVa 753 (二分图最大匹配) A Plug for UNIX
    UVa 1451 (数形结合 单调栈) Average
    UVa 1471 (LIS变形) Defense Lines
    UVa 11572 (滑动窗口) Unique Snowflakes
    UVa 1606 (极角排序) Amphiphilic Carbon Molecules
    UVa 11054 Wine trading in Gergovia
    UVa 140 (枚举排列) Bandwidth
  • 原文地址:https://www.cnblogs.com/lifusen/p/7278862.html
Copyright © 2011-2022 走看看