虚位以待(AD)
虚位以待(AD)
首页 > 网络编程 > PHP编程 > JS+PHP实现用户输入数字后显示最大的值及所在位置

JS+PHP实现用户输入数字后显示最大的值及所在位置
类别:PHP编程   作者:码皇   来源:互联网   点击:

这篇文章主要给大家介绍了JS+PHP实现用户输入数字后显示最大的值及是第几个的相关位置,文中给出了详细的示例代码供大家参考学习,需要的朋友们下面来一起看看吧。

本文主要给大家介绍的是关于JS+PHP实现用户输入数字后显示最大的值及所在位置的相关内容,目的:分清JS PHP的区别,拓宽思维,下面来一起看看详细的介绍:

分析

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

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

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

由浅入深:

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

    var a=[10,20,40,30];
    // var max=0;
    var max=a[0];
    for(var i=0;
    i<a.length;
    i++){
    if(max<a[i]){
    max=a[i];
    }
    }
    alert("最大数为"+max);

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

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

2.在JS实现获得数组的最大值最小值和他们的位置(即在数组中第几个)

[注:本案例位置+1是为了方便查看,JS数组开始也是0]

    var a=[10,20,40,30];
    var max=a[0];
    //不能指定一个数为最大值[var max=0](除非是确定的情况下),应该用数组里面的值,a[0]即让数组第一个值作为比较的最大值. var maxaddress=0;
    var min=a[0];
    var minaddress=0;
    for(var i=0;
    i<a.length;
    i++){
    if(max<a[i]){
    max=a[i];
    maxaddress=i }
    if(min>a[i]){
    min=a[i];
    minaddress=i }
    }
    alert("最大数为"+max+"位置为第"+(maxaddress+1)+"个");
    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);
    //truevar n1="123";
    var n2=Boolean(n1);
    //truevar n1="0";
    var n2=Boolean(n1);
    alert(n2);
    //truevar n1;
    var n2=Boolean(n1);
    //falsevar n1=null;
    var n2=Boolean(n1);
    //falsevar n1=0;
    var n2=Boolean(n1);
    //false

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

    <script> //var a=new Array(-12,34,56,88,32,"aa","-34.33","-34.34",12.23);
    /*var a=new Array(prompt("请输入数字"));
    document.write(a);
    */ var b=prompt("请输入要比较的数,用","号隔开");
    var a=new Array();
    a=b.split(",");
    // for(var j=0;
    j<a.length;
    j++){
    // document.write(a[j]);
    // }
    alert(typeof(a)+" JS数组本质是对象啊!!");
    //本质是对象 PHP数组就是数组,没有属性(比如length) document.write(a+"<br>");
    console.log(a+"<br>");
    var max=parseFloat(a[0]);
    //document.write(max);
    var maxaddress=0;
    var min=parseFloat(a[0]);
    var minaddress=0;
    for(var i=0;
    i<=a.length;
    i++){
    var shu=parseFloat(a[i]);
    if(shu>max){
    max=shu;
    maxaddress=i;
    }
    if(shu<min){
    min=a[i];
    minaddress=i;
    }
    }
    document.write("最大数为"+max+"位置为第"+(maxaddress+1)+"个"+"<br>");
    document.write("最小数为"+min+"位置为第"+(minaddress+1)+"个");
    </script>

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

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

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

1.制作HTML表单:

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> </head><body> <form action="deal.php" method="post"> 请输入数字:<input type="text" id="shu" name="shuzi" value=""> <input type="submit" value="提交"> </form> </body></html>

2.JS传值给HTML:

    <script type="text/javascript"> var a=prompt("请输入数字");
    document.getElementById("shu").value=a;
    </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

    <?phpheader("Content-type:text/html;
    charset=utf-8");
    $a=$_POST['shuzi'];
    //var_dump($a);
    $b=explode(',',$a);
    for($i=0;
    $i<count($b);
    $i++){
    echo $b[$i];
    }
    var_dump($b);
    $max=$b[0];
    $maxaddress=0;
    for($j=0;
    $j<count($b);
    $j++){
    if($b[$j]>$max){
    $max=$b[$j];
    $maxaddress=$j;
    }
    }
    echo "最大值是".$max."<br>";
    echo "位置为第".($maxaddress+1)."个";
    ?>

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

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

最后上图:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关热词搜索: js 数字最大值 php 数字最大值 php最大数字