Java基础入门day36

day36

js

dom控制css变化

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
</head>
<body>
 <p>this is p1</p>
 <p id="p2">this is p2</p>
 <p id="p3">this is p3</p>
​
 <script>
     document.getElementById("p2").innerHTML="<font color='red'>this is p2 updated</font>";
     document.getElementById("p2").style.fontFamily = "楷体";
     document.getElementById("p2").style.fontSize = "30px";
     document.getElementById("p3").innerText="<font color='red'>this is p3 updated</font>";
 </script>
</body>
​
</html>

使用dom可以对于元素的css进行设置

dom事件

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
</head>
<body>
 <h1 id="h1">this is h1</h1>
 <button οnclick="document.getElementById('h1').innerHTML='<font color=red>this is h1 updated</font>'">click me</button>
​
 <script>
 </script>
</body>
​
</html>

使用dom可以对于元素的事件做出反应

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
</head>
<body>
 <h1 οnclick="this.innerHTML='<font color=red>this is h1 updated</font>'">this is h1</h1>
 <script>
 </script>
</body>
​
</html>

dom使得JavaScript有能力对于html事件做出反应

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
</head>
<body>
 <h1 οnclick="changeText(this)">this is h1</h1>
 <script>
     function changeText(h){
         h.innerHTML="<font color=red>this is h1 updated</font>";
     }
 </script>
​
</body>
​
</html>

使用dom事件处理器调用一个函数

EventListener

addEventListener函数可以让用户在不同控件上添加事件

语法
element.addEventListener(event, function, useCapture);
参数名描述
event事件的类型
function事件触发后调用的函数
useCapture用于描述事件是冒泡还是捕获

特点:

  • addEventListener函数用于向指定的元素添加事件

  • 添加的事件句柄不会覆盖已存在的事件句柄

  • 可以向一个元素添加多个事件

  • 可以向同一个元素添加多个相同事件

  • 可以向任何dom对象添加事件监听,不一定是html元素,甚至是window对象

  • addEventListener可以更简单地控制事件的冒泡与捕获

  • 使用addEventListener函数,可以是的JavaScript能够将事件从html标记中分离出来,可读性更强

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button id="btn">click me</button>
    <script>
​
        document.getElementById("btn").addEventListener("click", btnAlert);
        document.getElementById("btn").addEventListener("click", displayDate);
        document.getElementById("btn").addEventListener("mouseover", changeColor);
        document.getElementById("btn").addEventListener("mouseout", changeColor02);
​
        function displayDate(){
            document.getElementById("btn").innerHTML=Date();
        }
​
        function btnAlert(){
            alert("i am clicked.")
        }
​
        function changeColor(){
            document.getElementById("btn").style.backgroundColor = "red";
        }
​
        function changeColor02(){
            document.getElementById("btn").style.backgroundColor = "green";
        }
    </script>
    
</body>
​
</html>

可以向元素添加多个事件,click,mouseover, mouseout

也可以同时想元素添加多个click事件

各自的事件互相不冲突

操作元素

如需向html中添加元素,dom也可以完成

  • document.createElement();

  • document.appendChild();

js中的定时任务

  • 定义定时器

    • setInterval('调用的函数名', 间隔时间);每间隔指定的间隔时间后自动执行函数

    • setTimeout('调用的函数名', 间隔时间);在固定的时间之后执行异常调用函数

  • 关闭定时器

    • clearInterval(定时器名称);

    • clearTimeout(定时器名称);

小综合案例-点名系统

点名系统

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>count</title>
    <script src="js/count.js" ></script>
    <link href="css/count.css" rel="stylesheet" />
</head>
<body οnlοad="create()">
    <input type="button" id="btnStart" value="start" οnclick="startCount()" /> 
    <input type="button" id="btnStop" value="stop" οnclick="stopCount()"  /> <p />
    <div id="par">
​
    </div>
</body>
</html>

html页面,放了两个按钮,外加一个空的div

.stu{
    border: 1px solid green;
    width: 200px;
    height: 200px;
    float: left;
    margin: 10px;
    text-align: center;
    line-height: 200px;
}

外部的css文件用来设置每一个学生div的样式

var names = [
    "王可明",    
    "左佳慧",    
    "靳钰萧",    
    "宋治刚",    
    "李伟" ,   
    "韩温昱",    
    "李博森",    
    "胡嘉豪",    
    "陈晓玲",    
    "冯煜" ,   
    "赵雪儿",    
    "刘西阳",    
    "呼唤" ,   
    "王鹏展",    
    "李晨星",    
    "周晓宇",    
    "唐润曈",    
    "陈世钰",    
    "付梦茹",    
    "何俊超",    
    "袁奕鸿",    
    "张亚绒",    
    "樊琳杰",    
    "崔雅静",    
    "刘彩霞",    
    "刘芙蓉",    
    "何佳豪",    
    "赵博" ,   
    "田秘" ,   
    "张恒超",    
    "何云飞"
];
​
var index = -1;
var select;
var flag;
​
function create(){
    var par = document.getElementById("par");
​
    for(var i = 0; i < names.length; i++){
        var stu = document.createElement("div");
​
        stu.innerHTML = names[i];
        stu.className = "stu";
        stu.style.backgroundColor = "pink";
        stu.id = "id" + i;
​
        par.appendChild(stu);
    }
}
​
function startCount(){
    document.getElementById("btnStart").disabled = true;
    flag = setInterval(myStart, 100);
}
​
function myStart(){
    if(index != -1){
        select.style.backgroundColor = "pink";
    }
    //alert(123);
    // console.log(new Date());
​
    index = parseInt((Math.random() * 99999) % names.length);
​
    // console.log(index);
    select = document.getElementById("id" + index);
​
    select.style.backgroundColor = "green";
}
​
function stopCount(){
    clearInterval(flag);
    document.getElementById("btnStart").disabled = false;
​
    if(index != -1){
        alert("此次的幸运儿是" + names[index]);
    }
}

外部的js文件,用来处理各种事件

浏览器的bom模型

概念:

bom: browser object model:浏览器对象模型,使得JavaScript可以与浏览器”对话“

  • window

    • 所有浏览器都支持window对象,表示浏览器窗口

    • 所有的js对象、函数以及变量均自动成为window对象的成员

    • 全局变量都是window对象的属性,比如alert,document

  • status

    • 浏览器的状态栏

    • 用来显示一些状态信息

  • history

    • back是后退一次

    • forward是前进一次

    • go(num),num为正数,则前进num次,如果为负数,后退num次

  • screen

    • window.screen.availWidth

    • window.screen.availHeight

  • location

    • 可以获取当前页的url地址,并把浏览器重定向到新的 页面

    • location.hostname:主机名

    • location.pathname: 路径或者文件名

    • location.port: 端口

    • location.protocal,协议,http,https

    • location.href:返回当前页的url

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    hello
    <a href="js10.html">js10</a>
    <button οnclick="history.back()">back</button>
    <button οnclick="history.forward()">forward</button>
    <button οnclick="history.go(-1)">指定地址</button>
    <script>
​
    </script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var h = window.screen.availHeight;
        var w = window.screen.availWidth;
​
        alert(w + ", " + h);
    </script>
</body>
</html>

screen的availHeight和availWidth可以分别拿到屏幕的可用尺寸

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var h = window.location.hostname;
        var href = window.location.href;
        alert(href)
        window.location.href = "http://www.baidu.com";
    </script>
</body>
</html>

location定位:可以获取主机名,端口,链接等信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值