zoukankan      html  css  js  c++  java
  • JS+PHP实现用户输入数字后取得最大的值并显示为第几个

    目的:分清JS PHP的区别,拓宽思维

    分析

    1.利用JS的prompt输入用户想要输入的值.

    2.利用HTML表单的text标签将输入的值传递给PHP处理文件

    3.PHP进行数值判定,选出最大值和位置.

    由浅入深:

    1.在JS实现获取数组的最大值.

    1 var a=[10,20,40,30];
    2   // var max=0;
    3   var max=a[0];
    4   for(var i=0;i<a.length;i++){
    5       if(max<a[i]){
    6           max=a[i];
    7       }
    8   }
    9   alert("最大数为"+max);

    这里值得注意的是:不可以直接设置一个变量max=0,因为你不确定以后输入的数字是小于0的还是大于0的[案列是大于0的],所以应该选择数组里面的一个数,就数组的第一个好了max=a[0].

    因为JS语言是基于对象面向过程的,JS里面所有的事物都可以是对象,所以它的数组有属性,length就是JS数组的一个获得数组长度的属性,有了这个属性就可以遍历数组,然后进行一一比较.

    2.在JS实现获得数组的最大值最小值和他们的位置(即在数组中第几个)[注:本案例位置+1是为了方便查看,JS数组开始也是0]

     1 var a=[10,20,40,30];
     2   var max=a[0];//不能指定一个数为最大值[var max=0](除非是确定的情况下),应该用数组里面的值,a[0]即让数组第一个值作为比较的最大值.
     3   var maxaddress=0;
     4   var min=a[0];
     5   var minaddress=0;
     6   for(var i=0;i<a.length;i++){
     7       if(max<a[i]){
     8           max=a[i];
     9           maxaddress=i
    10       }
    11       if(min>a[i]){
    12           min=a[i];
    13           minaddress=i
    14       }
    15   }
    16   alert("最大数为"+max+"位置为第"+(maxaddress+1)+"个");
    17   alert("最小数为"+min+"位置为第"+(minaddress+1)+"个");

    3.现在改成用prompt来进行用户输入获得值来求最大值等等.

    难点:

    1.如何输入,用prompt

    2.如何将一个字符串转为数组,并且要转换格式呢?

    前提知识:

    1.将字符串分割 用到的是JS的string对象的spilt方法(注意,JS一切皆是对象,因此叫方法,不叫函数)

    2.让一个"abc"字符串转为number类型,怎么转.

    字符串转数字类型
    ◆Number
    ★数字类型的字符串,转换之后得到的数字。var n1="123"; var n2=Number(n1);//123 
    ★★非数字字符串,转换之后得到是NaN。var n1="123abc"; var n2=Number(n1);//Nan 
    ★小数类型的字符串,转换之后得到的是原数字。var n1="123.23"; var n2=Number(n1);//123.23
    
    ◆parseInt
    ★整数数字类型的字符串,转换之后得到的整数数字。var n1="123"; var n2=parseInt(n1);//123
    ★数字开头的字符串,转换之后得到的是前边的数字。var n1="123abc"; var n2=parseInt(n1);//123
    ★非数字开头的字符串,转换之后得到的是NaN。。var n1="abc123"; var n2=parseInt(n1);//NaN
    ★★小数类型的字符串,转换之后取整(小数点直接省略)。var n1="123.53"; var n2=parseInt(n1);//123 var n1="-5.93"; var n2=parseInt(n1);//-5
    
    ◆parseFloat
    ★整数数字类型的字符串,转换之后得到的整数数字。var n1="123"; var n2=parseFloat(n1);//123
    ★数字开头的字符串,转换之后得到的是前边的数字。var n1="123abc"; var n2=parseFloat(n1);//123
    ★非数字开头的字符串,转换之后得到的是NaN。var n1="abc123"; var n2=parseFloat(n1);//NaN
    ★★小数类型的字符串,转换之后得到的是原数字。var n1="123.23"; var n2=parseFloat(n1);//123.23
    
    转布尔类型
    ★数字和字符串转完之后为true。
    ★undefined、null、0转完之后为false.
    var n1=123; var n2=Boolean(n1);//true
    var n1="123"; var n2=Boolean(n1);//true
    var n1="0"; var n2=Boolean(n1);alert(n2);//true
    var n1; var n2=Boolean(n1);//false
    var n1=null; var n2=Boolean(n1);//false
    var n1=0; var n2=Boolean(n1);//false
    

      以上分析完毕,开始书写代码

     1 <script>
     2         //var a=new Array(-12,34,56,88,32,"aa","-34.33","-34.34",12.23);
     3         /*var a=new Array(prompt("请输入数字"));
     4         document.write(a);*/
     5         var b=prompt("请输入要比较的数,用","号隔开");
     6         var a=new Array();
     7         a=b.split(",");
     8         // for(var j=0;j<a.length;j++){
     9         //          document.write(a[j]);
    10         // }
    11         alert(typeof(a)+"  JS数组本质是对象啊!!");//本质是对象 PHP数组就是数组,没有属性(比如length)
    12         document.write(a+"<br>");
    13         console.log(a+"<br>");
    14         var max=parseFloat(a[0]);
    15         //document.write(max);
    16         var maxaddress=0;
    17         var min=parseFloat(a[0]);
    18         var minaddress=0;
    19         
    20         for(var i=0;i<=a.length;i++){
    21             var shu=parseFloat(a[i]);
    22             if(shu>max){
    23                 max=shu;
    24                 maxaddress=i;
    25             }
    26             if(shu<min){
    27                 min=a[i];
    28                 minaddress=i;
    29             }
    30         }
    31         document.write("最大数为"+max+"位置为第"+(maxaddress+1)+"个"+"<br>");
    32         document.write("最小数为"+min+"位置为第"+(minaddress+1)+"个");
    33     </script>

    4.以上是JS做处理,我的目的是让JS+PHP+HTML联动起来.

    PHP是无法直接前端交互的,即他不能直接获取用户输入的值,而要通过html 的form表单

    JS数据传给PHP,你可以用AJAX,但我以后再讲,今天看看有什么方法.

    1.制作HTML表单:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4   <meta charset="UTF-8">
     5   <title>Document</title>
     6   
     7 </head>
     8 <body>
     9   <form action="deal.php" method="post">
    10     请输入数字:<input type="text" id="shu" name="shuzi" value="">
    11     <input type="submit" value="提交">
    12   </form>
    13   
    14 </body>
    15 </html>

    2.JS传值给HTML:

    1 <script type="text/javascript">
    2     var a=prompt("请输入数字");
    3     document.getElementById("shu").value=a;
    4   </script>

    这里有个坑,如果将JS代码写在HTML的header处,会报错,说Uncaught TypeError: Cannot set property 'value' of null

    因为浏览器解析顺序,在浏览器解析JS的时候(输入数字完成的时候),浏览器开始解析HTML,虽然JS赋值了text的value,但被后面HTML的解析成了text的value为NULL,这是自相矛盾的.

    所以尽可能的让JS代码写在后面,你先解析HTML,然后我再给你值.(具体情况具体分析,不一定JS代码都在头部)

    5.好了,HTML传值了,现在看PHP

     1 <?php
     2 header("Content-type:text/html;charset=utf-8");
     3 $a=$_POST['shuzi'];
     4 //var_dump($a);
     5 $b=explode(',',$a);
     6 for($i=0;$i<count($b);$i++){
     7     echo $b[$i];
     8 }
     9 var_dump($b);
    10 
    11 $max=$b[0];
    12 $maxaddress=0;
    13 for($j=0;$j<count($b);$j++){
    14     if($b[$j]>$max){
    15         $max=$b[$j];
    16         $maxaddress=$j;
    17     }
    18 
    19 }
    20 echo "最大值是".$max."<br>";
    21 echo "位置为第".($maxaddress+1)."个";
    22 
    23 
    24 ?>

    这里主要是看explode(将字符串拆分成数组) count(获得数组的个数)

    还有注意类型转换问题,以后补充或者你自己写写吧.

    最后上图:

  • 相关阅读:
    redisTemplate写哈希表遇到的坑
    embedded-redis在单元测试中的使用
    使用Standford coreNLP进行中文命名实体识别
    字符编码和文件编码
    Elasticsearch提示low disk watermark [85%] exceeded on [UTyrLH40Q9uIzHzX-yMFXg][Sonofelice][/Users/baidu/Documents/work/soft/data/nodes/0] free: 15.2gb[13.4%], replicas will not be assigned to this node
    nginx.conf常用配置解析
    使用nginx搭建文件下载服务器
    lua连接数据库操作示例代码
    spring常见注解说明
    lua相关库安装常见问题
  • 原文地址:https://www.cnblogs.com/xuyiyixuan/p/7044426.html
Copyright © 2011-2022 走看看