《Web前端设计与开发》实验六:BOM与DOM编程实验

一、实验内容

  1. 页面跳转
    (1) 问题:页面中放置一个按钮,点此按钮后,浏览器窗口从当前页面 跳转到其他页面。
    (2) 提示:使用 window 对象的 location 属性或 location 对象的 href 属性。
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>页面跳转</title>
        <script src="../js/页面跳转.js" type="text/javascript"></script>
    </head>
    <body>
        <button onclick="tiaoZhuan()">跳转页面</button>
    </body>
</html>
function tiaoZhuan(){
    window.location.href="https://zh.javascript.info/";
}

2.动态设置标签内容
(1) 问题:修改以下代码,使用标签代替文本框,在 标签中显示自动更新得日期时间。

<html> <body>
<input type="text" id="clock" size="35" /> <script language=javascript> var int=self.setInterval("clock()",50) function clock() { var t=new Date() document.getElementById("clock").value=t }
12
</script> <button onclick="int=window.clearInterval(int)">Stop interval</button>
</body> </html>

(2) 提示:为标签设置 id 属性,使用 document 对象的 getElementById()方法可以获取这个页面元素对象;使用页面元素 对象的 innerHTML 属性赋值可将文本或 HTML 标签写入它的标签中用 于显示内容。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>动态设置标签内容</title>
        <script src="../js/动态设置标签内容.js" type="text/javascript"></script>
    </head>
    <body>
        <span id="clock"></span>
        <button onclick="int=window.clearInterval(int)">Stop interval</button>
    </body>
</html>
var int=self.setInterval("clock()",50);
function clock() {
    var t=new Date();
    document.getElementById("clock").innerText=t;
}

3.读取表单数据
(1) 问题:表单提交时,通常需要对表单实行数据有效性验证,验证数 据的前提是读取表单元素的数据。如图练习 3.1 所示的表单,在点 击“提交”按钮时要读取登录名、密码、确认密码、性别、年龄等 数据。然后用在网页上用警示框提示出用户所输入的每一项,如图 练习 3.2。
在这里插入图片描述

(2) 分析:通过 document 对象的 getElementById()方法或 getElementByName()方法可以访问页面的表单元素;通过表单对象 的 element 集合属性也可访问特定表单内的表单元素。文本框、密 码框的文本可以通过他们的 value 属性来获得;单选框按钮时是否 被选中可由它的 checked 属性获知,它的值可由 value 属性获取; 由列表框的 selectedIndex 属性可知被选中的项的索引,用此索引 可在列表框的 option 集合中查找到被选中的项,项有 text 属性表 示它是文本,有 vlaue 属性表示的值。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>读取表单数据</title>
        <script src="../js/读取表单数据.js" type="text/javascript"></script>
    </head>
    <body>
        <form>
            <h1>会员注册</h1>
            登录名:<input type="text" name="userName" id="userName" /><br>
            密码:<input type="password" name="password" id="password" /><br>
            确认密码:<input type="password" name="confirmPassword" id="confirmPassword" /><br>
            性别:
                <input type="radio" name="sex" value="male" id="male" checked/>男性
                <input type="radio" name="sex" value="female" id="female" />女性<br>
            年龄:
            <select  style="width: 80px;"id="age" name="age">
                <option value =" ">--请选择--</option>
                <option value ="18">18岁</option>
                <option value ="19">19岁</option>
                <option value ="20">20岁</option>
                <option value ="21">21岁</option>
                <option value ="22">22岁</option>
            </select><br>
        </form>
        <input type="submit" name="提交" value="提交" onclick=javascrtpt:submit()>
    </body>
</html>
function submit(){
    var username=document.getElementById("userName").value;
    var password=document.getElementById("password").value;
    var confirmpassword=document.getElementById("confirmPassword").value;
    var sexs=document.getElementsByName("sex");
    for(var i=0;i<sexs.length;i++){
        if(sexs[i].checked){
            var sexs=sexs[i].value;
            break;
        }
    }
    var Age=document.getElementById("age").value;
    alert("登录名:"+username+"\n"
        +"密码:"+password+"\n"
        +"确认密码:"+confirmpassword+"\n"
        +"性别:"+sexs+"\n"
        +"年龄:"+Age)
}
  1. 自定义事件
    (1) 问题: 要开发一个游戏,启动游戏,加载图片和音乐,加载完后, 渲染场景和音效,加载和渲染由不同的人负责,为了加载模块和渲染模 块互不影响,易于扩展。我们采用自定义事件来指示组件内部到底发生 了什么。完善如下 js 代码,用 CustomEvent 传递自定义事件的信息以将 该事件的图片与音乐信息能在监听函数中展示出来。如练习 1.1、1.2。
    在这里插入图片描述
    (2)提示:用 CustomEvent 创建自定义事件并赋予其事件内容描述, 再在监听函数中取出并显示出来。
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>自定义事件</title>
        <link type="text/css" rel="stylesheet" href="../css/自定义事件.css">
    </head>
    <body>
        <button id="start">start</button>
        <div id="scene"></div>
        <script src="../js/自定义事件.js" type="text/javascript"></script>
    </body>
</html>
var start  = document.getElementById("start")
var init_img_success = false
var init_music_success = false

start.addEventListener("click",function (e){
        var gameStart = new CustomEvent("gameStart",{detail:{img:"imgContent",music:"musicContent"}})

        document.addEventListener("gameStart",function (e) {
            console.log("使用图片创建场景...")
            setTimeout(function () {
                console.log("创建场景完成")
                init_img_success = true
                alert(gameStart.detail.img)
                checkShow()
            },2000)

        })

        document.addEventListener("gameStart",function (e) {
            console.log("使用音乐创建音效...")
            setTimeout(function () {
                console.log("创建音效完成")
                init_music_success = true
                alert(gameStart.detail.music)
                checkShow()
            },500)

        })
        document.dispatchEvent(gameStart)
        function checkShow() {
            if(init_music_success && init_img_success){
                var scene = document.getElementById("scene")
                scene.className = "show"
            }
        }
    }
)
html.body{
    width: 100%;
}
#start{
    width: 100px;
    height: 40px;
    background: #262626;
    margin: 10px;
    color: #ffffff;
}
#scene{
    width: 400px;
    height: 200px;
    background: #262626;
    margin: 50px auto;
    color: #ffffff;
}
.show#scene{
    background-color: #26a9ff;
    transition: background-color 3s;
}
  1. 正方形的动画
    (1)问题: 1.点击按钮,正方形开始右移动 2.正方形同时进行放大,放大与移动效果如图练习 2.1 起始图, 练习 2.2 过程图,练习 2.3 结束图
    在这里插入图片描述
    (2) 提示:用 document 对象的 getElementById()方法获取正方形元素 并通过改变位置信息、width 和 height 来实现动画效果,利用计时 器实现移动效果。
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>实验2</title>
        <link type="text/css" rel="stylesheet" href="../css/正方形的动画.css">
    </head>
    <body>
        <a onclick="btn()">
        <div id="box"></div>
        </a>
        <script src="../js/正方形的动画.js"></script>
    </body>
</html>
var box=document.getElementById('box');
//速度
var index=10;
//定时器编号
var b;
//添加向右点击事件
function btn(){

    b=setInterval(getMove,100,index);//每100毫秒执行一次getMove函数
}
//box移动位置
function getMove(index){
    //获取box的左距离
    var left=window.getComputedStyle(box,null).left;
    var height = window.getComputedStyle(box,null).height;
    var width = window.getComputedStyle(box,null).width;

    //转换为数值
    left=parseInt(left);
    height=parseInt(height);
    width=parseInt(width);
    if(left>=500){
        clearInterval(b);
    }
    else{
        box.style.left = left+index+'px'//计算box的左距离
        box.style.height = height+index+'px';
        box.style.width = width+index+'px';
    }
}
#box{
    width: 100px;
    height: 100px;
    background: red;
    position: absolute;
    top: 0px;
    left: 0px;
}
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值