JavaScript前端开发之章节课后习题及答案

第一章

  • 填空题
  1. window.document.body可以简写为__document.body____。
  2. console.log(alert('Hello'))在控制台的输出结果是__undefined____。
  3. 编辑器中“以UTF-8无BOM格式编码”中的BOM指的是__字节顺序标记____。
  4. alert('测试'.length)的输出结果是__2____。
  • 判断题
  1. JavaScript是Java语言的脚本形式。( 错 )
  2. JavaScript中的方法名不区分大小写。( 错 )
  3. JavaScript语句结束时的分号可以省略。( 对 )
  4. 通过外链式引入JavaScript时,可以省略</script>标记。(错 )
  • 选择题
  1. 定义函数使用的关键字是(A)。

        A. function   B. func    C. var    D. new

     2.为代码添加多行注释的语法为( C )。

        A. <!-- -->    B. //    C. /*  */    D. #

     3.在对象的方法中访问属性name的语法为( B )。

        A. self.name    B. this.name    C. self.name()    D. this.name()

  • 编程题
  1. 利用本章知识,编写一个将用户输入的信息输出到网页的JavaScript程序。
<script>
	// 接收用户输入的信息
	var inputs = prompt('请自定义用户信息:');
	// 输出到网页中
	document.write(inputs);
</script>

第二章

  • 填空题
  1. Boolean(undefined)方法的运行结果等于__false____。
  2. 表达式(-5) % 3的运行结果等于___-2___。
  • 判断题
  1. JavaScript中age与Age代表不同的变量。( 对 )
  2. $name在JavaScript中是合法的变量名。( 对 )
  3. 运算符“.”可用于连接两个字符串。( 错 )
  • 选择题
  1. 下列选项中,不能作为变量名开头的是( B )。

        A. 字母 B. 数字  C. 下划线 D. $

     2.下列选项中,与0相等(==)的是( D )。

        A. null   B. undefined C. NaN      D. ''

数字和字符串有隐试转换规则:

  1. 任何非零的数为true,0为false。

  2. 字符串来说任何非空字符串为 true,空字符串为false。

    所以 0转换成布尔为false ,“”转化成布尔为false 所以结果为true

  3. 如若使用非自动隐试转换判断可以使用=== 或者 !==替代 ==和!==

     3.下列选项中,不属于比较运算符的是( D )。

        A. ==   B. ===     C. !==      D. =

  • 编程题
  1. 请编写程序求出1~100之间的素数。
<script>
 // 遍历1~100之间的数据
 for(var n=1;n<=100;n++){
  if(n==1){
	continue;
  }else{
	var flag=true;// 用来保存n是否为素数,默认n为素数
	  for(var j=2;j<n;j++){
		if(n%j==0){// 若能被j整除,则n不是素数
	 	  flag = false;

		}
	  }
	}
  if(flag){// 如果是质数,在网页中打印该数据
	document.write("100以内的素数有:"+n+'<br/>');
  }
}
</script>
  1. 有红、白、黑三种球若干个,其中红、白球共25个,白、黑球共31个,红、黑球共28个,求这三种球各有多少个?
<script>
for (var red = 0; red <= 25; ++red) {
   for (var white = 0;  white <= 31; ++white) {
      for (var black = 0; black <= 28; ++black) {
        if (((red + white) == 25) && ((white + black) == 31) && ((red + black) == 28)) {
           document.write('红球:' + red + ',白球:' + white + ',黑球:' + black);
         }
      }
   }
}
</script>

第三章

  • 填空题
  1. 表达式“[a, b] = [12, 34, 56]”执行后,变量b的值为___34___。
  2. 表达式“[1, 2, '1', '2'].lastIndexOf('1', 1)”的返回值是___-1__。

lastIndexOf 是从末尾开始检索的,参数一是查找的数据,参数二是起始位置。此处起始位置 为 1 , 因此从 2 开始往前查找,未找到,返回 -1。

  • 判断题
  1. 被delete关键字删除的数组元素值,该元素依然占用一个空的存储位置。( 对 )
  2. 表达式“['haha', 'xixi'].splice(4, 2)”的返回值是['haha', 'xixi']。(

splice 返回的是一个数组,数组里面为删除掉的元素。此处 起始位置为4大于数组总数,因此没有数据被删除,所以返回一个空数组。

     3.表达式“Array.isArray('0')”的返回值是false。( 对 )

  • 选择题
  1. 下列语句不能用于遍历数组的是( D )。

        A.for B.for…in C.for…of D.if

     2.下列方法中,不能用于添加数组元素的是( C )。

        A. unshift() B. push() C.shift()       D. splice()

     3.下列选项中创建数组的方式错误的是( C )。

        A.var arr = new Array();           B. var arr = [];

        C.var arr = new array();       D. var arr =[]; arr.length = 3;

  • 编程题
  1. 移出数组arr([1,2,3,4,2,5,6,2,7,2])中与2相等的元素,并生成一个新数组,不改变原数组。
<script>
// 创建数组
var  arr = [1,2,3,4,2,5,6,2,7,2];
// index表示新数组newarr的下标,默认为0
var  index = 0,newarr = [];
// 遍历数组
for(var i in arr){
  // 数组元素不全等于2,则将其保存到newarr中
  if(arr[i] !== 2){
	newarr[index] = arr[i];
	++index;
  }
}
</script>
  1. 利用indexOf()函数统计数组arr(['a','b','d','d','c','d','d'])中元素d出现的次数,并同时返回其对应的所有索引下标。
<script>
// 创建数组
var  arr = ['a','b','d','d','c','d','d'];
// 待查找的元素
var search= 'd';
// nwarr保存search在arr中的下标,i用于指定查找位置,j用于设置newarr的下标
var newarr = [],i=j=0;

while(i < arr.length){
  // 在arr中从i开始查找search,查找到第一个停止,返回对应的下标,没有找到返回-1
  var res = arr.indexOf(search,i);
  // 在arr中找到search
  if ( res !== -1) {
    newarr[j] = res; 	// 将当前查找的元素下标保存到newarr中
	i = res + 1;		// 从新指定查找的位置
	++j;				// 改变newarr的下标
  }
}
console.log('arr中元素d出现的次数:'+newarr.length+';对应的所有索引下标:'+newarr);
</script>

第四章

  • 填空题
  1. 函数“((a, b) => a * b)(6, 2);”的返回值是___12___。(箭头函数)
  2. JavaScript中函数的作用域分为全局作用域、___函数作用域___和块级作用域。
  3. 表达式“[12, 15, 8].find(function(ele){return ele >=10})”的返回值是___12___。

find函数返回满足回调函数的第一个元素的值,否则返回undefined

  • 判断题
  1. 函数showTime()与showtime()表示的是同一个函数。( 错 )
  2. 函数内定义的变量都是局部变量。( 错 )
  3. 匿名函数可避免全局作用域的污染。( 对 )
  • 选择题
  1. 阅读以下代码,执行fn1(4,5)的返回值是(B)。

        function fn1(x, y){

          return (++x) + (y++);

        }

        A. 9  B.10  C.11  D.12

     2.下列选项中,函数名称命名错误的是( C )。

        A. getMin   B. show      C. const      D. it_info

     3.下列选项中,可以用于获取用户传递的实际参数值的是( C )。

        A. arguments.length  B. theNums      C. params     D. arguments

        arguments,它是js中函数内置的一个对象,而执行函数方法的实参中值都存储在arguments中。

  • 编程题
  1. 编写函数实现单击change按钮,为div元素添加红色双线的边框。
<style>
    div{ width:50px; height: 50px; border:1px solid;}
</style>
<div></div>
<p> <button id="btn">change</button> </p>
<script>
    var btn = document.getElementById('btn');
    var div = document.getElementsByTagName('div')[0];
    btn.onclick = function () {
        div.style.border = 'double red';
    }
</script>

第五章

  • 填空题
  1. 若var a = {}; 则console.log(a == {}); 的输出结果为___false___。
  2. 查询一个对象的构造函数使用___constructor___属性。
  • 判断题
  1. Number.MIN_VALUE表示最小的负数。( 错 )//最小正值
  2. 对象中未赋值的属性的值为undefined。( 对 )
  3. obj.name和obj['name']访问到的是同一个属性。( 对 )
  • 选择题
  1. 调用函数时,不指明对象直接调用,则this指向( B )对象。

        A. document    B. window    C. Function    D. Object

     2.通过 [].constructor访问到的构造函数是( C )。

        A.Function     B. Object     C. Array       D. undefined

     3.Math对象的原型对象是( D )。

        A. Math.prototype   B.Function.prototype   C. Object   D. Object.prototype

  • 编程题
  1. 利用String对象的属性和方法实现过滤字符串前后空格。
<script>
 String.prototype.trim = function() {
    return this.replace(/(^\s*)|(\s*$)/g, '');
 };
 String.prototype.ltrim = function() {
    return this.replace(/(^\s*)/g, '');
 };
 String.prototype.rtrim = function() {
    return this.replace(/(\s*$)/g, '');
 };
  1. 编写代码模拟Object.create()的功能。
Object.prototype.create = function(obj) {
    if (Object.prototype.create) {
        return Object.prototype.create;
    }
    function F() {}
        F.prototype = obj;
        return new F();
    };

第六章

  • 填空题
  1. 在BOM中,所有对象的父对象是___window___。
  2. ___setTimeout()___方法用于在指定的毫秒数后调用函数。
  3. history对象的___length___可获取历史列表中的URL数量。
  • 判断题
  1. 全局变量可以通过window对象进行访问。( 对 )
  2. 修改location对象的href属性可设置URL地址。(
  3. history对象调用pushState()方法会改变历史列表中URL的数量。( 对 )
  4. screen对象的outerHeight属性用于返回屏幕的高度。( 错 )
  • 选择题
  1. 下列选项中,描述正确的是( B )。

        A. resizeBy()方法用于移动窗口

        B.pushState()方法可以实现跨域无刷新更改URL

        C. window对象调用一个未声明的变量会报语法错误

        D.以上选项都不正确

     2.下面关于BOM对象描述错误的是( D )。

        A. go(-1)与back()皆表示向历史列表后退一步

        B.通过confirm()实现的确认对话框,单击击确认时返回true

        C. go(0)表示刷新当前网页

        D.以上选项都不正确

  • 编程题
  1. 编写程序,实现电子时钟自动走动的效果,并提供一个按钮控制电子时钟是否停止走动。
<style>
 div{
   height:50px;
   line-height:50px;
   text-align:center;
   border:double #ccc;
   width:100px;
 }
</style>
<div id="clock"></div><p><button id="btn">暂停/开始</button></p>
<script>
 window.onload = startTime;
    var timer = null;
    function startTime()
    {
        var now = new Date();		// 获取当前的时间的毫秒数
        var h = now.getHours();		// 获取now的小时 (0 ~ 23)
        var m = now.getMinutes();	// 获取now的分钟 (0 ~ 59)
        var s = now.getSeconds();	// 获取now的秒数 (0 ~ 59)
        // 利用两位数字表示 分钟 和 秒数
        m = m < 10 ? '0'+ m : m;
        s = s < 10 ? '0'+ s : s;
        document.getElementById('clock').innerHTML = h + ":" + m + ":" + s
        timer = setTimeout('startTime()', 500);
    }
    // 通过按钮控制时钟暂停或开始
    document.getElementById('btn').onclick = function(){
        if(timer){
            clearTimeout(timer);
            timer = null;
        }else{
            startTime();
        }
    }
</script>

第七章

  • 填空题
  1. DOM中___doucument.createElement()___方法可用于创建一个元素节点。
  2. HTML DOM中的根节点是___<html>标签___。
  • 判断题
  1. document.querySelector('div ').classList可以获取文档中所有div的class值。( 错 )
  2. 删除节点的removeChild()方法返回的是一个布尔类型值。( 错 )//返回的是标签
  3. HTML文档每个换行都是一个文本节点。(
  4. document对象的getElementsByClassName()方法和getElementsByName()方法返回的都是元素对象集合HTMLCollection。( 错 )
  • 选择题
  1. 下面可用于获取文档中全部div元素的是( B )。

        A. document.querySelector('div')   B. document.querySelectorAll('div')

        C. document.getElementsByName('div') D. 以上选项都可以

    2.下列选项中,可以作为DOM的style属性操作的样式名为( B )。

        A. Background   B. display C. background-color        D. LEFT

    3.下列选项中,可用于实现动态改变指定div中内容的是( C )。

        A.console.log()   B. document.write() C. innerHTML D. 以上选项都可以

  • 编程题
  1. 请利用HTML DOM实现全选、全不选、反选功能。
<style>
    table{width:80%; border:1px solid #69c; border-collapse: collapse; margin:10px auto;}
    table tr th,table tr td{border:1px solid #69c; height:30px; font-size: 12px; 
text-align: center;}
</style>
<table>
    <tr><th>操作</th><th>编号</th><th>图书名称</th><th>价格</th></tr>
    <tr>
        <td><input type="checkbox" name="books"></td>
        <td>1</td><td>测试1</td><td>39.90</td>
    </tr>
    <tr>
        <td><input type="checkbox" name="books"></td>
        <td>2</td><td>测试2</td><td>78.90</td>
    </tr>
    <tr>
        <td><input type="checkbox" name="books"></td>
        <td>3</td><td>测试3</td><td>30.90</td>
    </tr>
    <tr><td colspan="4">
            <input id="checkAll" type="button" value="全选">
            <input id="checkNone" type="button" value="全不选">
            <input id="checkInvert" type="button" value="反选">
        </td><tr>
</table>
<script>
    (function(){
       // 分别获取全选按钮、全不选按钮、反选按钮
       var checkAll = document.getElementById('checkAll');
       var checkNone = document.getElementById('checkNone');
       var checkInvert = document.getElementById('checkInvert');
       // 获取所有复选框
       var checkboxes = document.getElementsByName('books');
       checkAll.onclick = function(){// 全选
           for(var i in checkboxes){
               checkboxes[i].checked = true;
           }
       };
       checkNone.onclick = function(){// 全不选
           for(var i in checkboxes){
               checkboxes[i].checked = false;
           }
       };
       checkInvert.onclick = function(){// 反选
           for(var i in checkboxes){
               checkboxes[i].checked  = checkboxes[i].checked ? false : true;
           }
       };
    })();
</script>

第八章

  • 填空题
  1. JavaScript为响应用户行为所执行的程序代码是指___事件处理程序___。
  2. JavaScript中通过___事件监听___可为<div>的mouseover事件绑定多个事件处理程序。
  • 判断题
  1. 在事件发生时,若未设置事件处理程序的参数,就不会产生事件对象。( 错 )
  2. IE8浏览器中可通过preventDefault()方法阻止a元素的默认行为。( )//IE浏览器不支持
  3. 事件对象的type属性可以获取发生事件的类型。( 对 )
  • 选择题
  1. 下列事件中,不会发生冒泡的是( C )。

        A. click       B. mouseout   C. blur     D. keyup

     2.Chrome浏览器中,获取鼠标单击页面位置的是( B )。

        A. clientX和clientY      B. pageX和pageY

        C. screenX和screenY           D. scrollLeft和scrollTop

     3.以下选项可在IE8浏览器中获取事件对象的是( C )。

        A. document.event   B. 元素对象.event C. window.event D. 以上选项都不可以

  • 编程题
  1. 请实现鼠标选中文本,先显示一个浮动工具栏,然后在工具栏里提供“分享”按钮。
① CSS样式-
<style>
    #toolbar {border: 1px solid #ff5c00; border-radius: 8px;width: 60px;position: absolute;height: 30px;line-height: 30px; top: 0; left: 0;display: none;background-color: #fff;text-align: center; font-size: 12px; }
    #toolbar e { position: absolute;top: -5px;left: 20px;width: 10px;height: 5px;background: url(arrow.gif) no-repeat; }
</style>

② 编写HTML
<div id="share">显示悬浮工具栏。</div><div>不显示悬浮工具栏</div>
<div id="toolbar"><e></e><span>分享<span></div>

④ 事件处理
<script>
    var toolbar = document.getElementById('toolbar');
    var share = document.getElementById('share');
    share.onmouseup = function (event) {
        // 获取鼠标按下时的位置
        var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;
        var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;
        // 判断是否有文本选中,选中则显示浮动工具栏
        if (window.getSelection().toString() || document.selection.createRange().text) {
            toolbar.style.display = 'block';
            // 设置浮动工具栏的显示位置
            toolbar.style.left = pageX - 20 + 'px';
            toolbar.style.top = pageY + 10 + 'px';
        }
    };
    document.onmousedown = function (event) {
        var event = event || window.event;
        var target = event.target || event.srcElement;
        var targetId = target.id;
        //没有发生在toolbar身上才隐藏悬浮工具栏
        if (targetId != "toolbar") {
            toolbar.style.display = 'none';
        }
    }
</script>
  1. 请实现按ESC键关闭“打开的登录框”。
① CSS样式
<style>
    .login-header { width: 100%;text-align: center;height: 30px; font-size: 24px;line-height: 30px;}
    * {margin: 0;padding: 0;}
    .box { width: 400px; height: 300px;border: 5px solid #eee;box-shadow: 2px 2px 2px 2px #666;position: absolute;top: 15%;left: 30%;display: none;}
    .hd { width: 100%; height: 25px; background-color: #7c9299; border-bottom: 1px solid #369; line-height: 25px; color: white;cursor: move;}
    #box_close {float: right; cursor: pointer;}
</style>

② 编写HTML
<div class="login-header"><a id="link">点击,弹出登录框</a></div>
<div class="box" id="box">
    <div class="hd" id="drop">注册信息 (可以拖拽)
        <span id="box_close">【关闭】</span>
    </div>
    <div class="bd"></div>
</div>
③ JavaScript处理键盘按键

<script>
    // 获取“点击,弹出登录框”的链接、登录框的关闭按钮、登录框、页面背景色
    var link = document.getElementById("link");
    var closeBtn = document.getElementById("box_close");
    var login = document.getElementById("box");
    // 点击登录 显示登录框和遮罩
    link.onclick = function () { 
        login.style.display = "block";
    }
    // 点击关闭按钮 隐藏登录框和遮罩
    closeBtn.onclick = function () {
        login.style.display = "none";
    }
    // 按下键盘上的ESC键 隐藏登录框和遮罩
    document.onkeydown = function (e) {
        console.log(e.keyCode);//ESC键的键盘码是27
        if (e.keyCode === 27) {
            closeBtn.onclick();
        }
    }
</script>

第九章

  • 填空题
  1. 在正则表达式中,  \b    用于匹配单词边界,  \B    用于匹配非单词边界。
  2. 正则表达式中“()”既可以用于分组,又可以用于   改变限定符的作用范围  
  • 判断题
  1. 正则表达式中,可通过反向引用获取子表达式的捕获内容。( 对 )
  2. 正则表达式“[a-z]”和“[z-a]”表达的含义相同。( 错 )
  3. 正则表达式“[^a]”的含义是匹配以a开始的字符串。( 错 )
  • 选择题
  1. 正则表达式“/[m][e]/gi”匹配字符串“programmer”的结果是( D )。

                A. m B. e C. programmer D. me

     2.下列正则表达式的字符选项中,与“*”功能相同的是( A )。

                A.{0,} B.? C. + D. .

     3.下列选项中,可以完成正则表达式中特殊字符转义的是( B )。

                A. / B. \  C. $ D. #

  • 编程题
  1. 请利用正则表达式查找4个连续的数字或字符。
// 定义正则
var reg = /[0-9]{4}|[a-z]{4}/gi;
// 测试
console.log('12abcd3456'.match(reg));
  1. 请利用正则表达式实现二代身份证号码的验证。
// 定义正则
var reg = /^\d{6}\d{4}[01]\d[0123]\d\d{3}[\d|X]$/i;
// 测试
console.log('110555199006167471'.match(reg));

第十章

  • 填空题
  1. 在发送请求时,HTTP的___Content-Type___头字段用于设置内容的编码类型。
  2. XMLHttpRequest对象的___onreadystatechange事件___属性用于感知Ajax状态的转变。
  • 判断题
  1. JSON.parse()用于将一段JSON字符串转换为对象。( 对 )
  2. XMLHttpRequest对象的send()方法用于创建一个新的HTTP请求。( 对 )
  3. XMLHttpRequest对象的abort()方法用于取消当前请求。( 对 )
  • 选择题
  1. 下面关于setRequestHeader()方法描述正确的是( B )。

        A. 用于发送请求的实体内容

        B. 用于单独指定请求的某个HTTP头

        C. 此方法必须在请求类型为POST时使用

        D. 此方法必须在open()之前调用

     2.下面关于JSON对象形式描述错误的是( B )。

        A. JSON对象是以“{”开始,以“}”结束

        B. JSON对象内部只能保存属性,不能保存方法

        C. 键与值之间使用英文冒号“:”分隔

        D. 通过“对象['属性名']”的方式获取相关数据

     3.阅读如下代码,输出结果为“李白”的选项为( A、C  )。

        var data = [{"name":"李白","age":5},{"name":"杜甫","age":6}];

        A. alert(data[0].name);

        B. alert(data.0.name);

        C. alert(data[0]['name']);

        D. alert(data.0.['name']);

  • 编程题
  1. 编写Ajax表单验证程序,判断用户名是否已经被注册。
输入用户名:<input id="username" type="text">
<input id="chk" type="button" value="检测是否可用">
<script>
  var chk = document.getElementById('chk');
  var username = document.getElementById('username');
  chk.onclick = function() {
    if (username.value === '') {
      alert('用户名不能为空!');
      return false;
    }
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
      if (xhr.readyState === XMLHttpRequest.DONE) {
        if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
          var data = JSON.parse(xhr.responseText);
          if (data.isReg) {
            alert('对不起,该用户名已经被注册');
          } else {
            alert('恭喜您,该用户名可以注册!');
          }
        } else {
          alert('服务器发生错误。');
        }
      }
    };
    xhr.open('GET', 'user.php?username=' + username.value);
    xhr.send();
  };
</script>
user.php
<?php
$username = 'admin';
echo json_encode(['isReg' => ($_GET['username'] == $username)]);
  1. 利用Ajax跨域请求获取指定地区的天气预报信息。
<div id="weather"></div>
<script>
  var weather = document.getElementById('weather');
  var xhr = new XMLHttpRequest();
  xhr.onreadystatechange = function() {
    if (xhr.readyState === XMLHttpRequest.DONE) {
     if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
        var data = JSON.parse(xhr.responseText).weatherinfo;
        weather.innerHTML = data.city + ' ' + data.weather + ' ' + data.temp2;
     }
    }
  };
  xhr.open('GET', 'weather.php');
  xhr.send();
</script>
weather.php
<?php
echo file_get_contents('http://www.weather.com.cn/data/cityinfo/101010100.html');

第十一章

  • 填空题
  1. jQuery显示隐藏的元素用___show()___实现。
  2. jQuery中___$.ajaxSetup()___用于设置全局Ajax默认的选项。
  • 判断题
  1. 选择器“$(':input')”仅能获取表单中的input元素标签。( 错  )
  2. jQuery中的页面加载事件可以注册多个事件处理程序。( 对 )
  3. jQuery中的hover()方法可同时处理鼠标移入与移出事件的切换。( 对 )
  • 选择题
  1. 以下选项中,可以根据包含文本匹配到指定元素的是( B )。

        A. text()       B. contains() C. input()      D. attr()

     2.下面选项中,可用来追加到指定元素的末尾的是( D )。

        A. insertAfter()   B. append()     C. appendTo()      D. after()

insertAfter(content)  把所匹配到的内容插入到content元素的尾部

append(content) 把content内容追加到匹配元素内容的尾部

appendTo() 把匹配到的内容插入到content内容的尾部

after() 把content内容插入到元素的尾部

     3.如果想要获取指定元素的位置,以下可以使用的是( A )。

        A. offset()       B. height()     C. css()      D. width()

  • 编程题
  1. 请简述JavaScript中的window.onload 事件和jQuery中的ready()方法的区别。

①  执行时机:JavaScript中window.onload必须等待网页中的所有内容加载完成后(包括外部元素,如图片)才能执行,而jQuery中的ready()网页中的所有DOM结构绘制完成后就执行(可能关联内容并未加载完成)。

② 编写个数:JavaScript中window.onload不能同时编写多个,而jQuery中的ready()能够同时编写多个。

③ 简化写法:jQuery中的ready()可以简写为$()。

  1. 请利用jQuery实现用户登录框的拖拽功能。
① CSS样式
<style>
    .login-header { width: 100%;text-align: center;height: 30px; font-size: 24px;line-height: 30px;}
    * {margin: 0;padding: 0;}
    .box { width: 400px; height: 300px;border: 5px solid #eee;box-shadow: 2px 2px 2px 2px #666;position: absolute;top: 15%;left: 30%;}
    .hd { width: 100%; height: 25px; background-color: #7c9299; border-bottom: 1px solid #369; line-height: 25px; color: white;cursor: move;}
    #box_close {float: right; cursor: pointer;}
</style>

② 编写HTML
<div class="box" id="box">
    <div class="hd" id="drop">注册信息 (可以拖拽)
        <span id="box_close">【关闭】</span>
    </div>
    <div class="bd"></div>
</div>

③ 处理拖拽事件

<script type="text/javascript" src="jQuery-1.12.4.min.js"></script>
<script>
    $("#drop").mousedown(function (event) {// 鼠标在拖动条上 按下 可拖动盒子  
        var event = event || window.event;
        // 获取鼠标按下时的位置
        var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;
        var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;
        // 计算鼠标按下的位置 距 盒子的位置
        var spaceX = pageX - parseInt($("#box").offset().left);
        var spaceY = pageY - parseInt($("#box").offset().top);
// 鼠标移动的时候 获取鼠标的位置 整个盒子跟着鼠标的位置走
        $(document).mousemove(function (event) { 
            var event = event || window.event;
            // 获取移动后鼠标的位置
            var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;
            var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;
            // 计算并设置盒子移动后的位置
            var l = parseInt(pageX - spaceX),t = parseInt(pageY - spaceY);
            $("#box").offset({left:l, top:t});
            //  清理鼠标拖动时,选中拖动条中文字的情况
		   window.getSelection().removeAllRanges() || document.selection.empty();
        });
    });
    $(document).mouseup(function () {// 释放鼠标按键时  取消盒子的移动 
        $(document).unbind("mousemove")
    });
</script>

第十二章

  • 填空题
  1. jQuery中___:checked___可以获取复选框的所有选中值。
  2. 在jQuery中event对象的___which___属性可获取键盘按键值。
  • 判断题
  1. jQuery是对JavaScript封装的函数库。( 对 )
  2. 变量aa = bb = 0,则aa变为3后,bb也等于3。( 错 )
  3. JSON是独立于语言的数据交换格式。( 对 )
  4. “{}”可用于在JavaScript中创建对象。( 对 )
  5. 变量创建后,可以在任意位置使用。( 错 )
  • 选择题
  1. 循环语句for (var i=0; i = 1; i++) { } 的循环次数是( D )。

                A. 0 B.1   C.2 D.无限

     2.下列选项中,不属于jQuery选择器的是( C )。

                A. 元素选择器  B. 属性选择器   C. CSS选择器   D. 分组选择器

     3.下列选项中,( C )可用来切换元素的可见状态。

                A. show()      B. hide()   C. toggle()  D. slideToggle()

  • 13
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 很抱歉,我无法提供这样的答案,因为这违反了学术诚信和教育道德的原则。学习过程课后答案只是帮助学生检查自己的理解和巩固知识的工具,而不是用来作弊或者取得不当成绩的手段。建议您通过自己的努力和实践,逐步提高自己的技能和能力。 ### 回答2: JavaScript前端开发案例教程是一门教授JavaScript前端技术的课程,对于想要深入学习前端开发的读者来说非常有价值。本课程不仅教授了JavaScript的基本语法和常用技巧,还通过实例演示了如何应用这些技术来构建前端应用。 以下是该课程部分章节课后习题答案: 1. 第一章 问题:什么是JavaScript?它与HTML和CSS有什么关系? 答案JavaScript是一种编程语言,一般用于在网页添加动态效果和交互功能。它和HTML和CSS一样都是前端开发的重要组成部分。HTML负责页面的结构,CSS则负责页面的样式,而JavaScript则负责动态效果和交互功能。三者的合作构成了前端开发的基础。 2. 第三章 问题:什么是变量和常量?它们有什么区别? 答案:变量是一个可以改变的值,而常量则是一个固定的值。在JavaScript,变量使用var、let或const声明,而常量只能使用const声明。变量可以被赋值任意次数,而常量只能被赋值一次。变量和常量在程序都可以用于存储和使用数据。 3. 第五章 问题:什么是函数?它有什么作用? 答案:函数是一段可复用的代码,它可以接受输入参数和返回输出结果。在JavaScript,函数使用function关键字定义。函数可以提高程序的可读性和代码的复用性。当一个功能需要被多次使用时,可以将其封装为一个函数,以便于代码的管理和维护。 4. 第七章 问题:什么是DOM?它有什么作用? 答案:DOM(Document Object Model)是一种层次化的树形结构,它代表了网页的元素和对象。在JavaScript,可以使用DOM来访问和修改网页的内容和样式。通过操作DOM,可以实现网页的动态效果和交互功能,例如点击按钮后弹出提示框,或者通过拖拽来改变元素大小和位置。 总的来说,JavaScript前端开发案例教程是一门非常实用的课程,它通过讲解基础概念和实例演示来帮助读者深入理解前端开发技术。同时,该课程还配有丰富的课后习题,可以帮助读者巩固和拓展知识。建议对前端开发感兴趣的人士可以试着学习一下。 ### 回答3: 此题所涉及的JavaScript前端开发案例教程课程是一系列讲解JavaScript基础、DOM操作、事件驱动、jQuery等的课程,难度较为适。通过课程的学习,可以让我们对JavaScript的编写和DOM操作有更深的认识。同时,在完成课后答案的过程,我们不仅可以通过实践的方式巩固所学知识,还可以培养解决问题的能力。 以下是一些常见的课后答案: 1. 在HTML文档,如何引入JavaScript文件并使其执行? 答:可以通过<script>标签将JavaScript文件引入HTML文档。例如: <script src="example.js"></script> 通过上述代码,可以将名为example.js的JavaScript文件引入到HTML文档,并使其执行。 2. 如何通过JavaScript获取一个元素的各种属性? 答:可以使用DOM操作获取元素的各种属性。例如: var element = document.getElementById("example"); console.log(element.getAttribute("class")); 通过上述代码,可以获取ID为“example”的元素的class属性,并在控制台输出。 3. 如何在JavaScript实现事件绑定? 答:可以使用addEventListener方法来实现事件绑定。例如: var element = document.getElementById("example"); element.addEventListener("click", function() { console.log("Clicked"); }); 通过上述代码,可以将一个点击事件绑定到ID为“example”的元素上,当元素被点击时,控制台会输出“Clicked”。 通过课程的学习和完成课后答案锻炼自己的能力,可以让我们更好地掌握JavaScript前端开发的基础知识,为以后的开发工作打下坚实的基础。同时,在学习要注重理解,并实践应用于实际网站开发,才能真正体现课程的价值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记录菌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值