JavaScript学习Day2

一、DOM EventListener

方法:addEventListener():

removeEventListener():

1addEventListener():方法用于向指定元素添加事件句柄

2removeEventListener():移除方法添加的事件句柄

<body>
    <button id="btn">按钮</button>
    <script>
        document.getElementById("btn").addEventListener("click",function () {
            alert("hello")
        });
    </script>
</body>

这里点击按钮之后,就会弹出对话框

<body>
    <button id="btn">按钮</button>
    <script>
        var x = document.getElementById("btn");
        x.addEventListener("click",Hello);   //句柄
        x.addEventListener("click",world);
        x.removeEventListener("click",Hello); //移除句柄
        function Hello() {
            alert("Hello");
        }
        function world() {
            alert("World");
        }
    </script>
</body>

二、JS事件详解-事件流

1.事件流:描述的是在页面中接收事件的顺序

2.事件冒泡:由最具体的元素接收,然后逐级向上传播至最不具体的元素的节点(文档)

3.事件捕获:最不具体的节点先接收事件,而最具体的节点应该是最后接收事件

三、JS事件详解-事件处理

1.HTML事件处理:直接添加到HTML结构中

2.DOM0级事件处理:把一个函数赋值给一个事件处理程序属性

<body>
    <div id="div">
        <button id="btn1">按钮</button>
    </div>
    <script>
        var btn1 = document.getElementById("btn1");
        btn1.onclick = function () {
            alert("hello DOM0级事件处理程序")
        }
    </script>
</body>

3.DOM2事件处理

addEventListener“事件名”,”时间处理函数”,”布尔值”);

Ture:事件捕获

False:事件冒泡

removeEventListener();

<div id="div">
    <button id="btn1">按钮</button>
</div>
<script>
    var btn1 = document.getElementById("btn1");
    btn1.addEventListener("click",demo1);
    btn1.addEventListener("click",demo2);
    function demo1() {
        alert("DOM2级事件处理程序1")
    }
    function demo2() {
        alert("DOM2级事件处理程序2")
    }
</script>

4.IE事件处理程序

attachEvent:添加一个事件

detachEvent:移除掉一个事件

<script>
    var btn1 = document.getElementById("btn1");
    if(btn1.addEventListener){
        btn1.addEventListener("click",demo);
    }else if (btn1.attachEvent){
        btn1.attachEvent("onclick",demo);
    }else {
        btn1.onclick = demo();
    }

    function demo() {
        alert("Hello")
    }
</script>

四、事件对象

1.事件对象:

在出发DOM事件的时候都会产生一个对象

2.事件对象event

1type:获取事件类型

2target:获取事件目标

<script>
    document.getElementById("btn1").addEventListener("click",shwoType)

    function shwoType(event) {
        alert(event.type); //获得当前事件的类型
        alert(event.target); //获取事件的目标
    }
</script>

3stopPropagation():阻止时间冒泡

4preventDefault():阻止事件默认行为

事件冒泡:

<div id="div">
    <button id="btn1">按钮</button>
</div>
<script>
    document.getElementById("btn1").addEventListener("click",showType)
    document.getElementById("div").addEventListener("click",showDiv)
    function showType(event) {
        alert(event.type); //获得当前事件的类型
        alert(event.target); //获取事件的目标
    }
    function showDiv() {
        alert("div");
    }
</script>

只点击了button但是div也出现了,这种情况成为事件的冒泡

然而通过在function showType中添加:event.stopPropagation();

实现组织事件冒泡行为。

组织事件默认行为:

<a id="aid" href="http://www.baidu.com">百度</a>

有一个a标签,其中点击会自动跳转百度页面

现在设置点击无法跳转百度页面

document.getElementById("aid").addEventListener("click",showA)
function showA(event) {
     event.stopPropagation();
     event.preventDefault();
}

五、什么是对象

1.什么是对象:

JavaScript中的所有事物都是对象:字符串、数值、数组、函数...

每个对象都有属性和方法

JavaScript允许自定义对象

2.自定义对象:

1)定义并创建对象实例

2)使用函数来定义对象,然后创建新的对象实例

<body>
    <!--创建对象-->
    <script>
        // people = new Object();  //创建了一个对象
        // people.name = "iwen";
        // people.age = "30";
        // document.write("name:"+people.name+",age:"+people.age);
        // people = {name:"iwen",age:"30"}; //此时这个也是一个对象
        function people(name,age) {     //通过函数创建一个对象
            this._name = name;
            this._age = age;
        }
        son = new people("iwen",30);
        document.write("name:"+son._name+",age:"+son._age);
    </script>
</body>

六、String字符串对象

1.String字符串对象:String对象用于处理已有的字符串

字符串可以使用单引号或双引号

2.在字符串中查找字符串:indexOf()  若存在则返回字符串的位置,若不存在返回-1

<script>
    var str = "Hello World";
    // document.write("字符串长度:"+ str.length)  //length属性
    document.write(str.indexOf("World1"));
</script>

3.Match();内容匹配:若匹配成功,返回字符串名,若匹配不成功返回null

document.write(str.match("World1"));

4.替换内容:replace();

document.write(str.replace("World","百度"))

5.字符串大小写转换:toUpperCase()/toLowerCase()

6.分割方法:split(“”);

var s = str.split(",")

字符串属性和方法:

1)属性:lengthprototypeconstructor

2)方法:charAt()charCodeAt()concat()fromCharCode()indexOf()lastIndexOf()match()replace()search()slice()substring()substr()valueOf()toLowerCase()toUpperCase()split()

七、Date日期对象

1.Date对象:日期对象用于处理日期和时间

2.获得当日的日期

<script>
    var date = new Date();
    document.write(date);
</script>

3.常用方法:

getFullYear():获取年份

getTime():获取毫秒

setFullYear():设置具体的日期

date.setFullYear(2010,1,11)

getDay():获取星期

八、Array数组对象

1.Array对象:

使用单独的变量名来储存一系列的值

2.数组的创建:

例:var myArray=[“Hello”,”me”]

3.数组的访问:

通过制定数组名以及索引号码,你可以访问某个特定的元素

4.数组常用方法:

1Concat():合并数组

var a=["hello","world"];
var b=["iwen","ime"];
var c = a.concat(b);
document.write(c)

2Sort():排序

var a=["8","6","7","5"]
document.write(a.sort());//升序
document.write(a.sort(function (a,b) {
    return b-a;
}));  //降序

3Push():末尾追加元素

var a = ["a","b"];
a.push("c");
document.write(a);

4Reverse():数组元素翻转

var a = ["c","b","a"]
a.reverse()

九、Math对象

1.Math对象:

执行常见的算数任务

2.常用方法:

1Round():四舍五入

document.write(Math.round(2.5))

2Random():返回0~1之间的随机数

document.write(parseInt(Math.random()*10));   //其中parseInt方法是讲值转换为int类型

3max():返回最大值

4min():返回最小值

5abs():返回绝对值

十、重要:DOM对象控制HTML

1.方法:

1getElementsByName():获取name

2getElementsByTagName():获取元素

3getAttribute():获取元素属性

function getAttr() {
    var anode = document.getElementById("aid");
    var attr  = anode.getAttribute("title");
    alert(attr);
}

4setAttriibute():设置元素属性

function setAttr() {
    var anode = document.getElementById("aid2");
    anode.setAttribute("href","http://www.baidu.com");
}

5childNodes():访问子节点

<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>
<script>
function getChildNode() {
    var chilenode = document.getElementsByTagName("ul")[0].childNodes;
    alert(chilenode.length)
}
getChildNode();
</script>

6parentNode():访问父节点

7createElement():创建元素节点

function createNode() {
    var body = document.body;
    var input = document.createElement("input");
    input.type = "button";
    input.value="按钮";
    body.appendChild(input);
}
createNode();

8createTextNode:创建文本节点

9insertBefore():插入节点

function addNode() {
    var div = document.getElementById("div");
    var node = document.getElementById("pid");
    var newnode = document.createElement("p");
    newnode.innerHTML = "动态添加一个P元素"
    div.insertBefore(newnode,node);
}
addNode();

10removeChild():删除节点

function removeNode() {
    var div =document.getElementById("div");
    var p = div.removeChild(div.childNodes[1]);

}
removeNode()

11offsetHeight:网页尺寸(不包含滚动条

function getSize() {
    var width = document.documentElement.offsetWidth;
    var height = document.documentElement.offsetHeight;
    alert(width+","+height)
}
getSize();

12ScrollHeight:网页尺寸(包含滚动条)

十一、windows对象

1.windows对象:

Windows对象是BOM的核心,windows对象指当前的浏览器窗口

所有JavaScript全局对象、函数以及变量均自动成为window对象的成员

全局变量是window对象的属性

全局函数是window对象的方法

甚至HTML DOMdocument也是window对象属性之一

2.window尺寸:

Window.innerHeight-浏览器窗口的内部高度

Window.innerWidth-浏览器窗口的内部宽度

document.write("宽度:"+window.innerWidth+",高度:"+window.innerHeight);

3.window方法:

Window.open()-打开新窗口

<button id="btn" onclick="btnClicked()">按钮</button>
<script>
    function btnClicked() {
        window.open("index.html");
    }
</script>

Window.close()-关闭当前窗口

function btnClicked() {
    window.close();
}

十二、计时器

1.计时事件:

通过使用JavaScript,我们有能力做到在一个设定的时间间隔之后来执行代码,二不是在函数被调用后立即执行,我们称之为计时事件。

2.计时方法:

1setInterval()-间隔指定的毫秒数不停地执行指定的代码

<body>
    <p id="ptime"></p>
    <script>
        var mytime = setInterval(function () {
            getTime();
        },1000);
        function getTime() {
            var d = new Date();
            var t = d.toLocaleTimeString();
            document.getElementById("ptime").innerHTML = t;
        }
    </script>
</body>

ClearInterval()方法用于停止setInterval()方法执行的函数代码

function stopTime() {
    clearInterval(mytime);
}

2setTimeout()-暂停指定的毫秒数后执行指定的代码

var win;
function myWin() {
    win = setTimeout(function () {alert("hello");},3000);
}

ClearTimeout()方法用于停止执行setTimeout()方法的函数代码

var win;
function myWin() {
    alert("hello");
    win = setTimeout(function () {myWin()},3000);
}
function stopWin() {
    clearTimeout(win);
}

十三、Histroy对象

1.history对象:

Window.history对象包含浏览器的历史(url)集合

2.History方法:

History.back()-与浏览器点击后退按钮相同

History.forward()-与在浏览器中点击按键向前相同

History.go()-进入历史中的某个页面

十四、Location对象

 

1.Location对象:window.location对象用于获得当前页面的地址(URL),并把浏览器重定向到新的页面

2.Location对象的属性:

Location.hostname返回web主机的域名

Location.pathname返回当前页面的路径和文件名

Location.port返回web主机的端口

Location.protocol返回所使用的的web协议(http://http://)

Location.href属性返回当前页面的URL

Location.assign()方法加载新的文档

<body>
    <button id="btn" onclick="getLoc()">按钮</button>
    <p id="ptime"></p>
<script>
    function getLoc() {
        document.getElementById("ptime").innerHTML = window.location.hostname;
    }
</script>
</body>

十五、Screen对象

1.Screen对象:

Window.screen对象包含有关用户屏幕的信息

2.属性:

Screen.availWidth-可用的屏幕宽度

Screen.availHeight-可用的屏幕高度

Screen.Height-屏幕高度

Screen.Width-屏幕宽度

猜你喜欢

转载自blog.csdn.net/weixin_38654336/article/details/80219594