JS+PHP实现用户输入数字后显示最大的值及所在位置

时间:2022-09-21 13:34:15

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

分析

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

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

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

由浅入深:

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

?
1
2
3
4
5
6
7
8
9
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]

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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类型,怎么转.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
字符串转数字类型
 
◆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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<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表单:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!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:

?
1
2
3
4
<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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
header("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实现用户输入数字后显示最大的值及所在位置

JS+PHP实现用户输入数字后显示最大的值及所在位置

JS+PHP实现用户输入数字后显示最大的值及所在位置

总结

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

原文链接:http://www.cnblogs.com/xuyiyixuan/p/7044426.html