黑马程序员Javascript学习

Javascript是一种在浏览器端执行的语言,不用和服务器交互就可以实现网页的一些变化。JavaScript是一种解释型语言,不需要编译就可以随时运行。

Javascript是一种弱类型的语言,不需要指明变量类型,会自动的判断变量类型。声明变量类型都使用var。可以使用双引号或者单引号声明字符串。

Javascript动态创建的元素,搜索引擎捕捉不到,所以可以不需要动态创建的地方就不要动态创建。

<script type="text/javascript" src="链接地址"></script>//引用外部javascript代码
<a href="javascript:alert('Hello')">超链接</a>//超链接中的javascript代码
<body onload="alert('当页面加载完后触发')">//body标签的onload事件会在页面全部加载完后触发
<button  onclick="navigate('http://www.baidu.com')">首页</button>//导航到指定的网页,火狐不支持
<button  onclick="window.location.href='http://www.baidu.com'">转到新页面</button>//和navigate()方法的效果相同
<button  onclick="window.location.reload()">刷新页面</button>//刷新当前页面
<input type="submit" value="注册" onclick="alert('信息不完整,无法提交!'); return false;"/>//在表单验证时禁止提交表单到服务器
<input type="button" onclick="document.forms[0].submit();" value="提交表单" />//手动触发表单验证
<input type="button" value="屏幕信息" onclick="alert('宽:'+window.screen.width+'  高:'+window.screen.height)"/>//获取屏幕的信息
<form action="指定页面链接"></form>//将表单数据发给指定页面
<form id="Form1" runat="server"></form>//将表单数据发给服务器
window.history.forward(); //操作历史记录,前进
window.history.back(); //后退 
var div = document.getElementById("DivID");//通过获取元素Id操作元素
var radio = document.getElementsByName("Vocation"); //通过获取元素的name操作元素,通常需要操作一组元素的时候使用
var input = document.getElementsByTagName("input"); //通过获取元素的标签名称操作元素,通常需要操作一组元素的时候使用
document.getElementById("DivID").innerHTML = "<h1>Demo</h1>"; //标签内,内容的HTML源码表示形式
document.getElementById("TextareaID").value = "Demo"//标签内,内容的文本表示形式,innerText:IE支持,火狐等不支持;
window.document.title = "页面标题改变了!"; //设置页面标题

动态创建元素、添加元素和设置属性:

function Method() {
            var input = document.createElement("input");  //创建元素
              input.setAttribute("type", "button");//设置属性
              input.setAttribute("value", "创建元素");
            input.setAttribute("class", "face");
            document.body.appendChild(input); //添加元素
        }
function ChangeFont() {
    var p = document.getElementsByTagName("p"); //获取页面上所有的p标签
     p.item(0).className = "face"; //设置第一个p标签的class属性
}

alert():警告框。confirm:确认框。prompt:消息框。

var result = confirm("点击确认可以得到人民币!");//确认框返回了bool值
        if (result) {
            alert("你得到了人民币!");//警告框弹出消息
        }
       result = prompt("请输入你的姓名!", "");//消息框返回了输入的消息
        alert("你的姓名是:" + result);

事件冒泡:事件由内向外依次执行

<div onclick="alert('div点击事件')"><span onclick="alert('span点击事件')"><strong onclick="alert('strong点击事件')">事件冒泡</strong></span></div>

使用document读取元素的width、height等属性时,读出来的是像"10px"这样的字符串。

使用document动态设置元素的width、height等属性时,可以使用parseInt将"10px"这样的字符串解析成10,然后进行四则运算等。

var width = document.getElementById("Demo").style.width;
            alert(parseInt(width));

在javascript中没有类的语法,只有对象

function Person(name, age) {
    this.Name = name; //声明对象的成员的值等于传进来的参数
    this.Age = age;//对象的成员就是以对象的key的方式出现的
    this.Say = function() { alert("大家好,我叫" + this.Name + ",今年" + this.Age + "岁") };
}
p1 = new Person("张耕明", 26); //这里必需要使用new以后才可以像操作一个对象一样操作这个方法
p1.Say();

数组的初始化:

var arr = [1, 2, 3, "天", "地", "人"]; //普通数组初始化
var arr1 = { "姓名": "张耕明", "年龄": "28", "性别": "男" }; //键值对数组初始化
for (var i in arr) {   //在javascript中这样写遍历的是数组的key
    alert(arr[i]);   //获取该key上的value
}
区 分:     
foreach (string str in nickname) //C#中foreach遍历的是数组的值
{
      Console.WriteLine("绰号:" + str);
}  
查看对象所有的成员或者属性:
for (var v in document) {
    alert(v); //对象的成员就是以对象的key的方式出现的
}

Array 对象的使用:

var arr = new Array(); //动态数组,不需要指定数组的大小
arr[0] = "吃饭";
arr["晚上"] = "睡觉";
arr[-1] = "武术";
arr[1] = "玩电脑";
arr[0.1] = "锻炼";
arr.reverse();//元素反转
for (var i in arr) {
     alert(i + "  " + arr[i]);
}

setInterval(重复执行的定时器)、setTimeout(等待一段时间后执行一次的定时器)。

清除setInterval类型的定时器时用clearInterval()方法,清除setTimeout类型的定时器时用clearTimeout()方法。

var interval; //为定时器设定一个标识、编号。
        function Start() {
            interval = setInterval("Method('Hello Javascript!')", 3000); //执行有参数的方法,每隔3秒执行一次
            interval = setInterval("Method()", 3000); //执行没有参数的方法
            interval = setTimeout("Method()", 3000); //3秒后执行一次指定的方法
        }
  clearInterval(interval); //清除定时器时传入指定的定时器编号

剪贴板操作:

function SetClipboard() {
            var text = document.getElementById("Text").innerHTML;
            text = text + "本文章来自:" + window.location.href;
            if (window.clipboardData) {          //这个属性支持IE,不支持火狐
                window.clipboardData.setData("text", text);//设置剪贴板内容和 oncopy 事件不能同时进行,需要延时
            }
        }
    <p id="Text" oncopy="setTimeout('SetClipboard()',100);" >剪贴板操作!</p>

标题滚动:

function ScrollTitle() {
            var title = document.title;
            var first = title.charAt(0);
            var last = title.substring(1, title.length);
            document.title = last + first;
        }
        function Start() {
            setInterval("ScrollTitle()", 300);
        }

正则表达式:

//用圆括号将所有选择项括起来,相邻的选择项之间用|分隔。但用圆括号会有一个副作用,是相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这种副作用。
^:匹配输入字符串的开始位置。例:^\d。        $:匹配输入字符串的结束位置。例:\d$。
*:匹配零次或多次。例:\d*。等价于{0,}。        +:匹配一次或多次。例:\d+。等价于{1,}。
?:匹配零次或一次。例:\d?。等价于{0,1}。        {n}:匹配n次。例:\d{2}。
{n,}:匹配至少n次。例:\d{2,}。        {n,m}:匹配至少n次,最多m次。例:\d{1,2}。
\d:匹配数字字符。等价于[0-9]。         \D:匹配非数字字符。等价于[^0-9]。
\n:匹配换行符。等价于\x0a。            \t:匹配制表符。等价于\x09。
\s:匹配任何空白字符,包括空格、制表符、换页符等。 \S:匹配任何非空白字符。
\w:匹配数字、字母和下划线。等价于[A-Za-z0-9_]。   \W:匹配非数字、字母和下划线。等价于[^A-Za-z0-9_]。
[\u4e00-\u9fa5]:匹配汉字。例:[\u4e00-\u9fa5]或[汉字]。 ?::后向引用,表示忽略相关匹配的保存。例:^(?:(?:[1-9])|(?:[1-2][0-9])|30|31)$。

Javascript中使用正则表达式:

var reg = /^\w{0,9}$/;//正则表达式
        var bl = reg.test("123");//返回bool值
        var result = reg.exec("123");//返回字符串

JQuery学习

JQuery简介:

JQuery是对Javascript封装的库,其内部是一些Javascript函数。

JQuery采用链式编程,都是用方法来取值或者赋值,所以可以一直点下去。

普通Javascript的缺点:在一些不同浏览器下需要不同的实现方法,要编写跨浏览器的程序非常麻烦。

JQuery优点:JQuery占用空间少,使用简单方便(Write less, Do more),跨浏览器兼容性好,插件丰富、开源、免费。

JQuery中ready的多次注册:

        jQuery(document).ready(Demo); /*传入当DOM就绪后要执行的函数*/
        function Demo() {
            alert("这是一次演示!");
        }
        $(document).ready(function () { alert("这是匿名的函数"); }); /*尽量使用匿名函数,可以避免命名冲突 */
        $(function () { alert("这样也可以!") }); /*这是ready注册函数的简写*/
        window.onload = function () {
            alert("DOM元素、CSS、图片等DOM元素的属性加载完毕后触发");
        }
        window.onload = function () {
            alert("后来的替代了先来的!"); /*window.onload只能注册一次,后注册的函数会覆盖先注册的函数*/
        }

JQuery提供的函数:

/*调用map函数对传入的数组中的元素逐个进行处理,然后将处理后的元素返回*/
        var arr = [1, 3, 5, 2, 4, 6];
        var newArr = $.map(arr, function (element) { /*第一个参数代表传入的数组,第二个参数中的element代表数组中的每一个元素*/
            if (element % 2 == 0) {
                return element + 5;
            }
            else {
                return element; /*使用map函数需要提供返回值*/
            }
        })
/*调用each函数对传入的数组中的元素逐个进行处理。*/
        var arr1 = { "动漫1": ["海贼王", "路飞"], "动漫2": ["火影忍者", "鸣人"], "电影": ["功夫", "周星驰"] };
        $.each(arr1, function(key, value) {    /*第二个参数中的key和value代表数组中的键和值*/
            alert("这里是" + key + "频道。\n" + "正在播放" + value[0] + ",主角:" + value[1]);
        })/*使用 $.each()函数不需要提供返回值*/
//在每一个匹配元素的submit事件中绑定一个处理函数。
    $("#Btn").submit(function() {  
        return false;
    })
$("#Btn").unbind("submit"); //bind()的反向操作,从每一个匹配的元素中删除绑定的事件。
//禁止表单提交
$("#BtnSubmit").click(function() {  
    return false;
})

JQuery动画效果:

$(element).show()、$(element).hide(),显示和隐藏。

$(element).slideUp()、$(element).slideDown()、$(element).slideToggle(),滑动效果。

$(element).fadeIn()、$(element).fadeOut()、$(element).fadeTo(),淡入淡出效果。

$(element).animate(),自定义动画。只有数字值可创建动画(比如 "margin:30px")。字符串值无法创建动画(比如 "background-color:red")

$("#Button").click(function() {
                $("#Div3").animate({
                    width: "30px",
                    height: "100px",
                    fontSize: "100px"
                }, 3000);
            })
        //鼠标跟随效果
            $(document).mousemove(function (e) {
                $("p").css({ position: "absolute", left: e.pageX, top: e.pageY }); /*e.pageX和e.pageY分别代表鼠标在页面上的X坐标和Y坐标*/
            })

JQuery基本选择器:

$(".style") /*选择class属性是style的所有元素*/
$("#Div input") /*选择id是"Div"下的所有input元素*/
$("#Div > input") /*选择id是"Div"下的直接input元素*/
$("div ul li") /*选择div元素内的ul元素内的li元素*/
$("body,input.style,ul") /*选择body元素、class属性是"style"的所有input元素、所有ul元素*/
$(element).next() /*选择该元素后相邻的同级元素*/
$(element).nextAll() /*选择该元素后所有的同级元素*/
$(element).siblings() /*选择该元素同级的所有元素*/
            $("td").mouseenter(function() {
                $(this).animate({ "width": "200px", "height": "60px" }); /*选择鼠标进入的<td>元素*/
                $("td").not($(this)).animate({ "width": "100px", "height": "60px" }); /*选择除该<td>元素以外的所有<td>元素*/
             })

JQuery过滤选择器:

$("td:first") /*选择第一个td元素*/
$("td:last") /*选择最后一个td元素*/
$("td:not(td:last)") /*选择不是最后一个td元素的所有td元素*/
$("td:even") /*选择所有偶数行的元素,索引从0开始计数,奇数索引受影响。例:第二行,索引为1*/
$("td:odd") /*选择所有奇数行的元素,索引从0开始计数,偶数索引受影响。例:第一行,索引为0*/
$("td:eq(0)") /*选择等于该索引值的元素,eq---equal*/
$("td:gt(0)") /*选择大于该索引值的元素,gt---great*/
$("td:lt(9)") /*选择小于该索引值的元素,lt---little*/
$(":header") /*选择所有的标题元素,h1...h6*/

JQuery属性过滤选择器:

$("input[id]") /*选择所有具有id属性的input元素*/
$("[title=提示消息]") /*选择title等于"提示消息"的所有元素*/
$("input[title!=提示消息]") /*选择title不等于"提示消息"的所有input元素*/
$("input[title^=输入]") /*选择title以"输入"开始的所有input元素*/
$("input[title$=搜索]") /*选择title以"搜索"结束的所有input元素*/
$("input[title*=关键词]") /*选择title包含"关键词"的所有input元素*/
$("[id][id$=t]") /*选择所有具有id属性,并且id是以t结束的所有元素*/

表单选择器:

$(":input") /*选择所有 input, textarea, select 和 button 元素*/
$("input") /*选择所有 input元素*/
$(":text") /*选择所有的单行文本框,相当于 $("input[type=text]")*/
$(":password") /*选择所有密码框*/
$(":checkbox") /*选择所有复选框*/
$(":radio") /*选择所有单选按钮*/
$(":reset") /* 选择所有重置按钮*/
$(":submit") /*选择所有提交按钮*/
$(":file")  /*选择所有文件域,相当于 $("input[type=file]")*/
$(":image")  /*选择所有图像域,相当于 $("input[type=image]")*/
$(":hidden") /*选择所有隐藏元素*/
$(":button") /*选择所有按钮,其中不包括:重置、提交、单选、复选按钮*/

表单对象属性选择:

$("input:enabled") /*选择所有可用的input元素*/
$("input:disabled") /*选择所有不可用的input元素*/
$("input:checked") /*选择所有被选中的input元素(复选框、单选框等,不包括select中的option)*/
$("select option:selected") /*选择所有被选中的option元素*/

属性的增加、删除、修改、读取:

$("a:first").attr("href") /*获取元素的属性值*/
$("a:first").attr({ href: "HomePage.html", title: "首页", className: "home" }); /*设置元素的多个属性值*/
$("a:first").attr("title", "首页"); /*设置元素的一个属性值*/
                $("p").attr("style", function() {
                    return "font-size:36px"; /*设置的属性值是一个方法的返回值*/
                })
$("a").removeAttr("href"); /*删除元素的属性值*/

创建、删除、替换DOM节点:

$("body").append(element); /*在页面的末尾增加元素*/
$("body").prepend(element); /*在页面的开始增加元素*/
$(element).after(element); /*在指定元素的后面增加元素*/
$(element).before(element); /*在指定元素的前面增加元素*/
$("div").empty(); /*清空div的内容,div仍然保留在页面中*/
$("a").remove("[title]"); /*删除具有title属性的所有a标签*/
$("p:first").replaceAll("p:last");//用第一个p标签替换掉最后一个p标签

JQuery对象和DOM对象:

JQuery对象是通过JQuery包装DOM对象以后产生的对象,DOM对象只有转换为JQuery对象才能被JQuery操作。

JQuery只能调用JQuery内部封装的方法,不能调用DOM对象的方法,反之亦然。

$(function () {
          // $("#Div").innerHTML = "<p>123</p>"; //错误:使用JQuey对象调用DOM对象的方法
            // document.getElementById("Div").html("<p>123</p>"); //错误:使用DOM对象调用JQuery对象的方法
            var domObject = document.getElementById("Div"); //得到DOM对象
            $(domObject).html("<font>DOM对象转换为JQuery对象</font>"); //包装DOM对象后调用JQuery的方法
            var dom = $(domObject)[0]; //将JQuery对象转换为DOM对象
            $("#Div").css({ background: "red", width: "300px", height: 300, "margin-left": "300px" }); //如果属性名包含 "-"的话,必须使用引号
            $("#Div").css("width", 300).css("height", 300).css("background", "red"); //修改style值
            alert($("#Div").css("width")); //获取style值
            alert($("#Button").val()); //获取value值
            $("#Button").val("value"); //修改value值
            alert($("Div").html());//获取html源码内容
            alert($("Div").text()); //获取文本内容
        })

编写jQuery 插件:

jQuery.extend({
    _四则运算: function(a, b, c) {
        ///    <summary>
        ///    四则运算
         ///    </summary>
        ///    <param name="a" type="int">参数1</param>
        ///    <param name="b" type="int">参数2</param>
        ///    <param name="c" type="string">运算符</param>
        ///    <returns type="int" />
        var arr = ["+", "-", "*", "/"];
        a *= 1; b *= 1; //转换为数字
        if (isNaN(a) || isNaN(b)) {
            alert("不能识别的符号,请输入数字!");
            return;
        }
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] == c) {
                switch (c) {
                    case "+": alert(a + b);
                        break;
                    case "-": alert(a - b);
                        break;
                    case "*": alert(a * b);
                        break;
                    case "/": alert(a / b);
                        break;
                    default:
                }
                return;
            }
        }
        alert("错误,请检查你的输入!");
  }
});
posted @ 2012-10-31 10:49  张耕明  阅读(727)  评论(0编辑  收藏  举报