【JavaScript】js02

正则对象。
  声明:
    //var reg = new RegExp(‘‘, ‘‘);// i,g 修正符。
    // i,不区分大小写,g 全局匹配。
    //var reg = /\w/i;

  方法:
    //exec(); 如果匹配到,返回结果,如果匹配不到,返回 null
    //test(); 如果匹配到,返回 true,如果匹配不到,返回 false

  元字符。
    . 查找单个字符,除了换行和行结束符。
    \w 查找单词字符。// 字母数字下划线。
    \W 查找非单词字符。
    \d 查找数字。
    \D 查找非数字。
    \s 查找空白符。
    \S 查找非空白符。
  量词
    + 至少有一个。
    * 0个或者多个。
    ? 0个或者一个。
    {m,} 至少 m 个。
    {m,n} m - n个。
    {m} m 个。
    ^ 以什么 开头。
    $ 以什么 结尾。   

    注意: js 对象大致分类。
      内置对象。
      自定义对象。new Object(); {}
      DOM对象。

三,事件。
  定义:就是浏览器(文档)里发生一件事。

  准备知识。
    网页元素的默认行为。

  事件的三要素。
    事件源,
    事件类型,
    事件处理程序,

<div id="did" style="width: 200px;height: 200px;background: #f00;"></div>

<script type="text/javascript">

    // 1. 获取 did
    var did = document.getElementById(‘did‘);// did 就是事件源。

    // 2. 添加事件。
    // onclick 就是事件类型。
    did.onclick = function(e)// 事件处理程序。
    {
        // console.log(e);
        var x = e.clientX;
        var y = e.clientY;
        console.log(x + ‘:‘ + y);// 获取鼠标距离窗口的坐标。

        var _x = e.pageX;
        var _y = e.pageY;
        console.log(_x + ‘:‘ + _y);// 获取鼠标距离文档的坐标。

        did.innerHTML = x + ‘:‘ + y + "-----" + _x + ‘:‘ + _y;
        did.style.textAlign = ‘center‘;
        did.style.lineHeight = ‘200px‘;

        did.style.backgroundColor = ‘yellow‘;
    }

</script>

    事件对象。
      事件对象并不是必须的。根据需求,如果需要,就写上。
      事件对象,是系统自动封装好的。不同的事件类型有不同的事件对象。

  // 获取鼠标距离窗口的坐标
    //e.clientX;
    e.clientY;
  // 获取鼠标距离文档的坐标。
    //e.pageX;
    //e.pageY;

  绑定事件。
    //onclick="alert(111)"; 事件属性绑定。DOM 0 级。

<div id="did" onclick="alert(‘111‘);" style="width:200px;background: #f00;height: 200px;"></div>

    //did.onclick = function(){}// 匿名函数绑定。重复添加相同事件时,会覆盖。

获取元素。
var did = document.getElementById(‘did‘);
//  绑定事件。
did.onclick = function()
{
    alert(‘222‘);
}

    //did.addEventListener// 添加事件监听,可叠加多个相同事件。attachEvent()// 早期IE DOM 2 级。

//addEventListener 添加事件监听。
var did = document.getElementById(‘did‘);

did.addEventListener(‘click‘, function(){
    alert(‘333‘);
});

did.addEventListener(‘click‘, function(){
    alert(‘333----2‘);
});

  各种事件。
    文档事件。
      onload,当文档加载完成之后,执行(即事件源可以放在事件处理程序之后)。

<script type="text/javascript">

    // window 对象。
    window.onload = function()
    {
        // 1. 获取元素。
        var did = document.getElementById(‘did‘);

        // 2. 绑定事件。
        did.onclick = function()
        {
            did.style.backgroundColor = ‘#0f0‘;
        }
    }

</script>

<div id="did" style="width: 200px;height: 200px;background: #f0f;"></div>

      onunload,文档卸载事件。// 兼容性有问题。
      onbeforeunload,文档卸载事件。// 兼容性有问题。
    鼠标事件。
      onclick,单击。
      ondblclick,双击
      onmouseover,鼠标移入
      onmouseout,鼠标移出
      onmousemove,鼠标移动
      onmousedown,鼠标按下
      onmouseup,鼠标抬起
      oncontextmenu,右键

      例子:鼠标拖动div

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js 鼠标拖动 div</title>
    <style type="text/css">
        *
        {
            margin: 0;
            padding: 0;
        }
    </style>
</head>
<body>

    <div id="did" style="width: 200px;height: 200px;background: #ccc;position: absolute;"></div>

    <script type="text/javascript">

        // 声明全局变量。
        var _x = 0;
        var _y = 0;

        // 控制是否按下。
        var isDown = false;

        // 获取元素。
        var did = document.getElementById(‘did‘);
        // 添加事件。
        did.onmousedown = function(e)
        {

            // 设置 为 true
            isDown = true;
            this.style.background = "#f00";
            this.style.cursor = ‘move‘;

            // 获取鼠标的坐标。
            var mx = e.pageX;
            var my = e.pageY;
            // console.log(mx + ‘----‘ + my);

            // 获取 div 的依稀量。
            var dx = did.offsetLeft;
            var dy = did.offsetTop;
            // console.log(dx + ‘----‘ + dy);

            _x = mx - dx;
            _y = my - dy;
        }

        window.onmousemove = function(e)
        {
            if(!isDown)
            {
                return ;
            }

            // 不停 地获取鼠标的 坐标。
            var mmx = e.pageX;
            var mmy = e.pageY;

            // 计算div 新的位置。
            var newX = mmx - _x;
            var newY = mmy - _y;

            // 设置 div 的位置。
            did.style.left = newX + ‘px‘;
            did.style.top = newY + ‘px‘;

        }

        did.onmouseup = function()
        {
            isDown = false;
            this.style.background = ‘#ccc‘;
            this.style.cursor = ‘default‘;

        }

    </script>

</body>
</html>

    键盘事件
      onkeydown,keyCode ,表示你按下的是哪一个键。
      onkeypress
      onkeyup

      例子:键盘移动div

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js 键盘 移动</title>
    <style type="text/css">
        *
        {
            margin: 0;
            padding: 0;
        }

        #con
        {
            width: 500px;
            height: 400px;
            background: #ccc;
            margin: 0 auto;
        }
        #did
        {
            position: absolute;
            width: 50px;
            height: 50px;
            background: blue;
        }
    </style>
</head>
<body>

    <div id="con">
        <div id="did"></div>
    </div>

    <script type="text/javascript">

        //获取元素。
        var did=document.getElementById(‘did‘);
        var con=document.getElementById(‘con‘);

        //获取con的left,top
        var conLeft=con.offsetLeft;
        var conTop=con.offsetTop;

        //获取con的宽度、高度
        var conWidth=con.offsetWidth;
        var conHeight=con.offsetHeight;

        //获取did的宽度、高度
        var didWidth=did.offsetWidth;
        var didHeight=did.offsetHeight;

        //步进速度
        var step=2;

        //定义判断是否有计时器存在的变量
        var inte=null;

        //添加事件
        window.onkeydown=function(e){

            //获取代码。
            var keyCode=e.keyCode;
            switch(keyCode) {
                case 37:
                    moveLeft();
                    break;
                case 38:
                    moveUp();
                    break;
                case 39:
                    moveRight();
                    break;
                case 40:
                    moveDown();
                    break;
            }

        }

        function moveLeft(){

            //判断当前是否有定时器存在
            if (inte!=null) {
                return;
            }

            inte=setInterval(function(){

                //获取原来的left
                var oldLeft=did.offsetLeft;

                //计算现在的left
                var newLeft=oldLeft-step;

                var minLeft=conLeft;

                //判断边界
                if (newLeft<minLeft) {
                    newLeft=minLeft;
                }

                //设置
                did.style.left=newLeft+‘px‘;

                },1);

        }

        function moveRight(){

            if (inte!=null) {
                return;
            }

            inte=setInterval(function(){

                //获取原来的left
                var oldLeft=did.offsetLeft;

                //计算。
                var newLeft=oldLeft+step;

                //最大边界
                var maxLeft=conLeft+conWidth-didWidth;

                //判断
                if (newLeft>maxLeft) {
                    newLeft=maxLeft;
                }

                //设置
                did.style.left=newLeft+‘px‘;

            },1)

        }

        function moveDown(){

            if (inte!=null) {
                return;
            }

            inte=setInterval(function(){

                //获取原来的top
                var oldTop=did.offsetTop;

                //计算。
                var newTop=oldTop+step;

                //最大边界
                var maxTop=conTop+conHeight-didHeight;

                //判断
                if (newTop>maxTop) {
                    newTop=maxTop;
                }

                //设置
                did.style.top=newTop+‘px‘;

            },1)

        }

        function moveUp(){

            //判断当前是否有定时器存在
            if (inte!=null) {
                return;
            }

            inte=setInterval(function(){

                //获取原来的top
                var oldTop=did.offsetTop;

                //计算现在的top
                var newTop=oldTop-step;

                var minTop=conTop;

                //判断边界
                if (newTop<minTop) {
                    newTop=minTop;
                }

                //设置
                did.style.top=newTop+‘px‘;

                },1);

        }

        //键盘抬起事件。
        window.onkeyup=function(){

            //清除定时器
            clearInterval(inte);
            inte=null;

        }

    </script>

</body>
</html>

    表单事件。
      onfoucs,获取焦点事件。
      onblur,失去焦点事件。

      例子:移入移出正则验证

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js 表单事件 onfocus onblur</title>
    <style type="text/css">
        #inp
        {
            height: 30px;
            border:1px solid #ccc;
            font-size: 14px;
            line-height: 30px;
            padding-left:10px;
        }
    </style>
</head>
<body>

    <input id="inp" type="text" name="username" value="">

    <script type="text/javascript">

        //获取元素
        var inp=document.getElementById(‘inp‘);

        //获取焦点。
        inp.onfocus=function(){

            // alert(‘111‘);

            this.style.border=‘1px solid blue‘;

        }

        inp.onblur=function(){

            //获取当前字符串
            var value=this.value;

            //声明正则。
            var reg=/^\w{6,18}$/;

            //验证。
            var res=reg.test(value);

            if (res) {
                this.style.border=‘1px solid green‘;
            }else{
                this.style.border=‘1px solid red‘;
            }

        }

    </script>

</body>
</html>

      onsubmit,表单提交事件。
      onreset,表单重置事件。

      例子:表单正则验证

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js 表单提交和重置 事件onsubmit onreset</title>
    <style type="text/css">
        #inp
        {
            height: 30px;
            border:1px solid #ccc;
            font-size: 14px;
            line-height: 30px;
            padding-left:10px;
        }
    </style>
</head>
<body>

    <form id="myform" accept="">
        <input type="text" name="username" id="inp"><br>

        <input type="submit" name="" value="提交">
        <input type="reset" name="" value="重置">
    </form>

    <script type="text/javascript">

        //获取元素。
        var myform=document.getElementById(‘myform‘);
        var inp=document.getElementById(‘inp‘);

        //添加提交事件。
        myform.onsubmit=function(){

            //获取当前字符串
            var value=inp.value;

            //声明正则
            var reg=/^\w{6,18}$/;

            //验证。
            var res=reg.test(value);

            if (res) {
                inp.style.border=‘1px solid green‘;
            }else{
                inp.style.border=‘1px solid red‘;
                return false;
            }

        }

        //添加重置事件
        myform.onreset=function(){

            // return false;
            //confirm 确认框
            var res=confirm(‘是否要重置?‘);

            if (!res) {
                return false;
            }

        }

    </script>

</body>
</html>

      onchange,下拉框事件。// 城市联动。

      例子:城市联动

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js 城市联动</title>
</head>
<body>

    <select id="p">

    </select>

    <select id="c">

    </select>

    <script type="text/javascript">

        // 获取元素。
        var p = document.getElementById(‘p‘);
        var c = document.getElementById(‘c‘);

        // 创建省市关系。
        var pro = [‘北京‘, ‘河北‘, ‘河南‘, ‘山东‘, ‘山西‘];
        var city = [];
        city[0] = [‘昌平‘, ‘朝阳‘, ‘海淀‘, ‘东城‘];
        city[1] = [‘石家庄‘, ‘保定‘, ‘唐山‘, ‘廊坊‘];
        city[2] = [‘郑州‘, ‘驻马店‘, ‘洛阳‘, ‘漯河‘ ];
        city[3] = [‘青岛‘, ‘烟台‘, ‘济南‘, ‘德州‘];
        city[4] = [‘太原‘, ‘长治‘, ‘运城‘, ‘吕梁‘];

        // 写业务。
        var pstr = ‘‘;
        for(var i = 0; i < pro.length; i ++)
        {
            pstr += "<option value="+ i +">"+ pro[i] +"</option>";
        }

        p.innerHTML = pstr;

        // 添加事件。
        p.onchange = function()
        {
            init();
        }

        init();

        // 封装函数。
        function init()
        {
            var cstr = ‘‘;
            // 获取当前省份的下标。
            var value = p.value;

            for(var j = 0; j < city[value].length; j ++)
            {

                cstr += "<option value="+ j +">"+ city[value][j] +"</option>";
            }

            c.innerHTML = cstr;
        }

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

      onselect,文本选中事件。
      oninput,正在输入事件。

    图片事件。
      onerror,图片加载失败事件。

    窗口事件。
      onresize

    滚动事件。
      onscroll

    获取多个元素。 document.getElementsByTagName();
    循环内部,要找到当前对象,使用 this。

    事件的冒泡。(如两个div相套时,点击上方的小div时会先触发小div的事件再触发大div的事件)
      // 阻止事件冒泡。
      e.stopPropagation();

      例子:阻止事件冒泡

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js 冒泡。</title>
    <style type="text/css">

        #d1
        {
            width: 300px;
            height: 300px;
            background: #f00;
            position: relative;
        }

        #d2
        {
            position: absolute;
            left:100px;
            top:100px;
            width: 100px;
            height: 100px;
            background: yellow;
        }

    </style>
</head>
<body>

    <div id="d1">
        <div id="d2"></div>
    </div>

    <script type="text/javascript">

        // 获取元素。
        var d1 = document.getElementById(‘d1‘);
        var d2 = document.getElementById(‘d2‘);

        d1.onclick = function(e)
        {
            alert(‘d1‘);
        }

        d2.onclick = function(e)
        {
            // 阻止事件冒泡。
            e.stopPropagation();
            alert(‘d2‘);
        }

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

获取计算后的样式。
var style = getComputedStyle(对象);
style.width;
style.background;

全选,反选,全不选。

三,DOM,文档对象模型。document Object Model。

在学习 HTML 的阶段,我们认为 html 中的所有内容都叫元素。
在学习 js 阶段,我们把html 中的所有内容都叫 节点。

节点类型。
元素节点
属性节点
文本节点
注释节点
文档节点
节点关系。
childNodes
children
firstChild
firstElementChild
lastChild
lastElementChild
previousSibling
previousElementSibling
nextSibling
nextElementSibling
parentNode
parentElement

通用方法。
document.getElementById
document.getElementsByTagName
document.getElementsByName
document.getElementsByClassName

节点操作。
document.createElement(‘img‘);
did.appendChild(img);
did.insertBefore(img, childNode);
did.setAttribute(‘src‘, ‘./images/1.jpg‘);
did.getAttribute(‘src‘);
did.replaceChild()
did.removeChild()
document.createAttribute();
document.createTextNode();
img.clone();
img.clone(true);

时间: 2024-10-12 18:14:27

【JavaScript】js02的相关文章

【javascript】ajax 基础 --本文转载

[javascript]ajax 基础 什么是 ajax ajax 即"Asynchronous JavaScript and XML"(异步 JavaScript 和 XML),也就是无刷新数据读取. http 请求 首先需要了解 http 请求的方法(GET 和 POST). GET 用于获取数据.GET 是在 URL 中传递数据,它的安全性低,容量低. POST 用于上传数据.POST 安全性一般,容量几乎无限. ajax 请求 ajax 请求一般分成 4 个步骤. 1.创建 a

【JavaScript】兼容IE6可调可控的图片滑块

图片滑块其实也与图片轮播一样,无需这么多奇奇怪怪的代码就能够实现,只是布局有点复杂,而且这东西在Bootstrap里面也没有,在网页中,这个组件也越来越少见的,毕竟这个小小的组件太浪费网络资源了,实现的逻辑还比较复杂,如果不要被特别要求,能不做最好不好. 有时候,如果一个如同<[CSS]黑色幽默,兼容IE6的纯原生态的门户网站>(点击打开链接)的简单网页就能够交货,就不要卖弄你的前端技巧了. 虽然这个组件的效率很低,但是还是讲解一下实现的原理,也是完美兼容IE6,同时包你能够随心所欲地放置这个

【JavaScript】使用Bootstrap来编写 选择折叠项collapse

选择折叠项collapse在网页中并不常用,不过也并不少见. 这也算是一个比较实用的组件. 折叠项collapse在默认情况下仅能有一项是处于打开状态的. 一.基本目标 使用Bootstrap来编写如下图的选择折叠项: 其中服务条款2在打开网页的时候就是打开状态. 点击不同的折叠项,其余的项就会收起,这项就会打开. 二.制作过程 1.同之前<[JavaScript]使用Bootstrap来编写一个在当前网页弹出的对话框,可以关闭,不用跳转,非弹窗>的第一步(点击打开链接) 因为需要使用Boot

【JavaScript】你知道吗?Web的26项基本概念和技术

Web开发是比较费神的,需要掌握很多很多的东西,特别是从事前端开发的朋友,需要通十行才行.今天,本文向初学者介绍一些Web开发中的基本概念和用到的技术,从A到Z总共26项,每项对应一个概念或者技术. A — AJAX AJAX 全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.根据Ajax提出者Jesse James Garrett建议,AJAX: 使用XHTML+CSS来表示信息: 使用Java

【JavaScript】jQuery Ajax 实例 全解析

jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对jQuery.ajax()进行封装以方便我们使用的方法,当然,如果要处理复杂的逻辑,还是需要用到jQuery.ajax()的(这个后面会说到). 1. load( url, [data], [callback] ) :载入远程 HTML 文件代码并插入至 DOM 中. url (String) :

【JavaScript】【译】编写高性能JavaScript

英文链接:Writing Fast, Memory-Efficient JavaScript 很多JavaScript引擎,如Google的V8引擎(被Chrome和Node所用),是专门为需要快速执行的大型JavaScript应用所设计的.如果你是一个开发者,并且关心内存使用情况与页面性能,你应该了解用户浏览器中的JavaScript引擎是如何运作的.无论是V8,SpiderMonkey的(Firefox)的Carakan(Opera),Chakra(IE)或其他引擎,这样做可以帮助你更好地优

【JavaScript】计算字符串的长度

定义: functionGetChineseCount(str) { varchinieseCount=0; varbadChar="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; badChar+="abcdefghijklmnopqrstuvwxyz"; badChar+="0123456789"; badChar+=""+" ";//半角与全角空格 badChar+="`[emai

【JavaScript】父子页面之间跨域通信的方法

由于同源策略的限制,JavaScript跨域的问题,一直是一个比较棘手的问题,为了解决页面之间的跨域通信,大家煞费苦心,研究了各种跨域方案.之前也有小网同学分享过一篇“跨域,不再纠结” 开始照着尝试时还是有些不够明白的地方,深入了解之后,这里给大家补充一点更具体的做法. 先来看看哪些情况下才存在跨域的问题: 其中编号6.7两种情况同属于主域名相同的情况,可以设置domain来解决问题,今天就不讨论这种情况了. 对于其他跨域通信的问题,我想又可以分成两类: 其一(第一种情况)是a.com下面的a.

【JavaScript】HTML5/CSS3实现五彩进度条应用

今天要介绍的是一款基于HTML5和CSS3的进度条应用,这款进度条是静态的,仅提供进度条的五彩外观.当然你可以在CSS中动态设置进度值来让其变得动态,一个很好的实现方式是利用jQuery动态改变CSS中的进度值,让进度条实时动起来.具体效果大家可以看演示. 你也可以在这里查看在线演示 接下来我们来分析一下这款进度条的源代码以及实现思路,代码主要由HTML和CSS组成,如果你需要动态改变进度值,也可以自己添加Javascript代码,也是比较简单的. HTML代码: <section class=