请老师帮我检查,谢谢

请老师帮我检查,谢谢

  <div class="calculator">  

    <p>

    <input type="text" class="frontinput" value="1">

      <span class="signal">+</span>

      <input type="text" class="backinput" value="1">

      <span>=</span>

      <span class='result'>2</span>

    </p>

    <p>

    <input type="button" class="btn" value="+" title="add">

      <input type="button" class="btn" value="-" title="subtract">

      <input type="button" class="btn" value="*" title="multiply">

      <input type="button" class="btn" value="/" title="divide">

    </p>

  </div> 





    <script type="text/javascript">

    //获取元素

   

    var btn=document.querySelectorAll(".btn");


    var signal=document.querySelector(".signal");

    var frontinput=document.querySelector(".frontinput");

  var backinput=document.querySelector(".backinput");

  var result=document.querySelector(".result");

  //Byclassname 与 queryselector的区别

  //document.queryselector.value??

  //绑定事件

   

    for (var i=0;i<btn.length;i++){

    btn[i].onlick= function(){

    console.log(this.value);

    switch (this.title){

    case 'add':

    add();

    break;

    case 'subtract':

    subtract();

    break;

    case 'multiply':

    multiply();

    break;

    case 'divide':

    divide();

    break;

    }

    };

    }

    //注意add()与add的区别

    //写函数

    function add(){

        signal.innerHTML="+";

  result.innerHTML=frontinput.value+backinput.value;

    }

    function subtract(){

        signal.innerHTML="-";

  result.innerHTML=frontinput.value-backinput.value;

    }

    function multiply(){

        signal.innerHTML="*";

  result.innerHTML=frontinput.value*backinput.value;

    }

    function divide(){

        signal.innerHTML="/";

  result.innerHTML=frontinput.value/backinput.value;

    }

    //result改内容用.innerHTML

    </script>

</body>

</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕慕子 2020-09-29 17:55:41

同学你好,对于你的问题解答如下:

  1. 因为onclick拼写错误,到点击按钮无法实现效果,建议修改:

    http://img1.sycdn.imooc.com//climg/5f72ffcf0973582205280110.jpg

  2. 由于value属性值获取后是字符串类型的,使用+时,会进行字符串拼接,效果如下所示是不对的。

    http://img1.sycdn.imooc.com//climg/5f73005c0912e80e04890090.jpg

    建议:使用Number方法,将其转成数值。

    http://img1.sycdn.imooc.com//climg/5f7300c609513d7b09780177.jpg

    注意:只需要给加法函数中的value使用Number方法进行转换就可以了,减法、除法和乘法在进行运算时,默认会先转成数值类型,然后才参与运算,不需要再添加Number进行转换了。

  3. 如下图所示的注释,是不理解getElementsByClassName与querySelector方法的区别吗?

    http://img1.sycdn.imooc.com//climg/5f73016509fc33f005710096.jpg

    如果是这样的话,那么可以参考如下解析对比理解:

    (1)传入的参数不同,getElementsByClassName方法只能接收类名作为参数,querySelector方法可以接收任意属于css的选择器。示例:

    http://img1.sycdn.imooc.com//climg/5f7302ba09efdba907780488.jpg

    http://img1.sycdn.imooc.com//climg/5f7302ce09a98bd608800315.jpg

    (2)由上面的打印结果可以看出,getElementsByClassName获取元素会存放在类数组中,要想使用里面的元素,需要使用索引的方式获取,而querySelector方法直接就获取了一个元素。

    (3)getElementsByClassName获取的元素是动态的,会随着dom结构的变化,得到的元素也会跟着变化,但是querySelector获取的元素是静态的,示例:

    http://img1.sycdn.imooc.com//climg/5f7303fa0908cdab08040406.jpg

    先分别使用两种方式获取了a链接,之后将div下的内容设置为空,测试输出结果如下:

    由于页面中a链接已经不存在了,所以getElementsByClassName方式获取的元素是动态的,所以结果为空,而querySelector方法获取的元素是静态的,依然还在。

    http://img1.sycdn.imooc.com//climg/5f73043309e1060907430186.jpg

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师