0


JavaScript、jQuery实现“社区便利店收银系统”(1+X Web前端开发 例题)

题目要求

阅读下列说明、效果图和HTML代码,进行网页编程,回答问题1至问题5。

【说明】

随着个性化服务发展,学校、街边、社区等都流行将水果等商品洗净、切好,并装盒,按份出售。现开发一个“社区便利店收银系统”,店中每天提供固定种类的水果,装盒后,标记每一份价格,按份进行销售。在系统中,打开收银网页(casher.html),点击“+”添加销售水果,点击“结账”进行购买水果结算,点击“完成交易”进行下一个新用户购买。

项目名称为casher,包含收银网页casher.html和js文件夹,其中,js文件夹包含jquery-3.3.1.min.js文件。

收银网页分为三个区域:上端内容为“标题”和一个不可编辑的“文本框”,“文本框”用来显示结账金额;中间内容为水果商品表格,在表格每一行中,点击一次“+”按钮,则添加一份,点击多次,则添加多份;下端内容为“结帐”和“完成交易”按钮。

【效果图】

(1)收银网页casher.html效果如图3-1所示。

图3-1 初始化状态

(2)在表格每一行中,点击水果名称后的“+”按钮,则将该水果的价格显示到上方的“文本框”中。若购买多份水果时,每份水果的价格之间使用“+”连接,如图3-2所示。

图3-2 添加水果

(3)点击“结帐”按钮,将“文本框”中价格进行计算,设置“文本框”显示内容为“总金额:xxx”;将“结帐”按钮设置为“禁用”;使用jQuery动画,将中间的表格透明度设为“0.3”,动画持续时间为“1s”。如图3-3所示。

图3-3 结帐

(4)点击“交易完成”按钮,重新加载网页,恢复到网页的初始状态。

题目代码如下

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
    <title>社区便利店收银系统</title>
    <style>
      body{
         text-align:center;
         font-size:13px;
      }
      table{
        margin:10px auto;
      } 
      #result{
        width:245px;
        height:40px;
      }
    </style>
  </head>
  <body>
    <h2>社区便利店收银系统</h2>
    <input type="text" value="" id="result" disabled="disabled" />
    <table border="1" width="250px">
      <tr>
        <th>名称</td>
        <th>价格</td>
        <th>添加</td>
      </tr>
      <tr>
        <td>山东苹果</td>
        <td>¥13.5/份</td>
        <td><input type="button" value="+" onclick="addClick(13.5)" /></td>
      </tr>
      <tr>
        <td>新奇士橙</td>
        <td>¥12.5/份</td>
        <td><input type="button" value="+" onclick="addClick(12.5)" /></td>
      </tr>
      <tr>
        <td>麒麟瓜</td>
        <td>¥3.0/份</td>
        <td><input type="button" value="+" onclick="addClick(3.0)" /></td>
      </tr>
      <tr>
        <td>国产红提</td>
        <td>¥10.5/份</td>
        <td><input type="button" value="+" onclick="addClick(10.5)" /></td>
      </tr>
      <tr>
        <td>进口香蕉</td>
        <td>¥4.5/份</td>
        <td><input type="button" value="+" onclick="addClick(4.5)" /></td>
      </tr>
    </table>
    <input class="btn" type="button" value="结 帐" id="btn_checkout" onclick="checkoutClick()" />
    &nbsp;&nbsp;&nbsp;
    <input class="btn" type="button" value="交易完成" onclick="reloadClick()" />
    <script>
      /*
      功能:使用Javascript编写代码,点击“+”按钮触发,修改“文本框”值为购买的水果价格,多次点击,以“+”连接各价格
      参数:price 为添加水果的价格
      返回:无
      编写代码提示:
           (1)获得“文本框result”值
           (2)判断“文本框result”值是否为””:
           (3)若为””,则将当前price赋值给“文本框”
           (4)若不为"",则先在“文本框”已有值后添加一个“+”,再添加此次价格price      
*/
      function addClick(price) {
        // 编写代码
   
      }
      /*
      功能:使用Javascript编写代码,点击“结账”按钮触发,计算所购水果的总金额,并将结果显示在“文本框”result上。
      参数:无
      返回:无
      编写代码提示:
           (1)获得“文本框result”值
           (2)使用“+”分隔出“文本框result”值中每一个价格,存放到Array对象中
           (3)使用for循环遍历数组对象,将每个价格相加得到总金额
           (4)设置“文本框result”值为“总金额:xxx”
           (5)调用disabledBtn()函数禁用“结帐”按钮
           (6)调用transparency()函数设置水果商品表格的透明度
      */
      function checkoutClick() {
        // 编写代码
      }
      /*
      功能:使用jQuery库编写代码,将“结帐”按钮设为禁用
      参数:无
      返回:无
      */
      function disabledBtn() {
        // 编写代码
      }
      /*
      功能:使用jQuery库编写代码,将水果商品表格透明度设为0.3,动画持续时间为1s
      参数:无
      返回:无
      编写代码提示:使用jQuery的动画函数实现。
      */
      function transparency() {
        // 编写代码
      }
      /*
      功能:点击“交易完成”按钮触发,重新加载当前页面,初始页面状态
      参数:无
      返回:无
      */
      function reloadClick() {
        // 编写代码
    Window.loaction.reloda();
      }
    </script>
  </body>
</html>

问题如下

❗❗❗看到题目,我可以发现这道题目的考法不同于之前的考法,不是补充填写代码空,而是补充代码的功能块,所以看清上下代码之间的联系和题目给出的提示。

①【问题1】(7分)

使用JavaScript编写addClick()函数,并调试运行,满足功能要求。

      /*
      功能:使用Javascript编写代码,点击“+”按钮触发,修改“文本框”值为购买的水果价格,多次点击,以“+”连接各价格
      参数:price 为添加水果的价格
      返回:无
      编写代码提示:
           (1)获得“文本框result”值
           (2)判断“文本框result”值是否为””:
           (3)若为””,则将当前price赋值给“文本框”
           (4)若不为"",则先在“文本框”已有值后添加一个“+”,再添加此次价格price      
     */
      function addClick(price) {
        var result =document.getElementById('result').value;
        if(result==""){
          document.getElementById('result').value=price;
        }else{
          document.getElementById('result').value=result+"+"+price;
            }
         }
      }

📚分析

获得“文本框result”值,通过DOM来获取

document.getElementById('填写id名');

用if-else语句判断price的值


②【问题2】(10分)

使用JavaScript编写checkoutClick()函数,并调试运行,满足功能要求。

      /*
      功能:使用Javascript编写代码,点击“结账”按钮触发,计算所购水果的总金额,并将结果显示在“文本框”result上。
      参数:无
      返回:无
      编写代码提示:
           (1)获得“文本框result”值
           (2)使用“+”分隔出“文本框result”值中每一个价格,存放到Array对象中
           (3)使用for循环遍历数组对象,将每个价格相加得到总金额
           (4)设置“文本框result”值为“总金额:xxx”
           (5)调用disabledBtn()函数禁用“结帐”按钮
           (6)调用transparency()函数设置水果商品表格的透明度
      */
      function checkoutClick() {
        var result = document.getElementById("result").value;
        if (result == "") {
              return;
            }
        var prices = result.split("+");
        var total = 0.0;
        for (var idx = 0; idx < prices.length; idx++) {
              total += parseFloat(prices[idx]);
            }
        document.getElementById("result").value = "总金额:" + total;
        disabledBtn();
        transparency();
       }

📚分析

获得“文本框result”值,通过DOM来获取

document.getElementById('填写id名');

需要分隔result的值,然后存放到数组里面由此可以知道使用split()方法

定义和用法

split() 方法用于把一个字符串分割成字符串数组。

语法

**stringObject.split(*separator*,*howmany*)**

参数描述separator必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。howmany****可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。

例子

在本例中,我们将按照不同的方式来分割字符串:

var str="How are you doing today?"

document.write(str.split(" ") + "<br />")

document.write(str.split("") + "<br />")

document.write(str.split(" ",3))

输出:

How,are,you,doing,today?

H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?

How,are,you

多学一招

JavaScript Array join() 方法

定义和用法

join()方法将数组作为字符串返回。

元素将由指定的分隔符分隔。默认分隔符是逗号 (,)。

指定的分隔符分隔 这样写如用号分隔 join('')。

注释:join()方法不会改变原始数组。

例子

<!DOCTYPE html>
<html>
<body>
<h1>join() 方法将数组作为字符串返回。</h1>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits.join('*');
</script>
</body>
</html>

** 输出:**


③【问题3】(5分)

使用jQuery编写disabledBtn()函数,并调试运行,满足功能要求。

/*
      功能:使用jQuery库编写代码,将“结帐”按钮设为禁用
      参数:无
      返回:无
      */
      function disabledBtn() {
        $("#btn_checkout").attr("disabled", "disabled");
      }

📚分析

首先题目要求用jq来编写,所以不用js的DOM写法来获取元素,因此用$("#btn_checkout")来获取到这个id。

将按钮设置为禁用,用到disabled属性,禁用 input 元素。

通过jq的attr() 方法来设置或返回被选元素的属性值。

返回属性值

返回被选元素的属性值。

语法

**$(*selector*).attr(*attribute*)**

参数描述attribute规定要获取其值的属性。

④【问题4】(5分)

使用jQuery编写transparency()函数,并调试运行,满足功能要求。

/*
      功能:使用jQuery库编写代码,将水果商品表格的透明度设为0.3,动画持续时间为1s
      参数:无
      返回:无
      编写代码提示:使用jQuery的动画函数实现。
      */
      function transparency() {
        $("table").animate(
          {opacity: '0.3'},1000
        );
      }

📚分析

jQuery 动画效果 - animate() 方法

定义和用法

animate() 方法执行 CSS 属性集的自定义动画。

该方法通过CSS样式将元素从一个状态改变为另一个状态。CSS属性值是逐渐改变的,这样就可以创建动画效果。

只有数字值可创建动画(比如 "margin:30px")。字符串值无法创建动画(比如 "background-color:red")。

⑤【问题5】(3分)

编写reloadClick()函数,并调试运行,满足功能要求。

 /*
      功能:点击“交易完成”按钮触发,重新加载当前页面,初始页面状态
      参数:无
      返回:无
      */
      function reloadClick() {
        window.location.reload();
      }

📚分析

Location 对象

Location 对象包含有关当前 URL 的信息。

Location 对象是 window 对象的一部分,可通过 window.location.xxx 格式的相关属性对其进行访问。

定义和用法

reload()方法用于刷新当前文档。

reload() 方法类似于你浏览器上的刷新页面按钮。

如果把该方法的参数设置为 true,那么无论文档的最后修改日期是什么,它都会绕过缓存,从服务器上重新下载该文档。这与用户在单击浏览器的刷新按钮时按住 Shift 健的效果是完全一样。

实现效果


本文转载自: https://blog.csdn.net/weixin_53231455/article/details/125309028
版权归原作者 黛琳ghz 所有, 如有侵权,请联系我们删除。

“JavaScript、jQuery实现&ldquo;社区便利店收银系统&rdquo;(1+X Web前端开发 例题)”的评论:

还没有评论