本文主要给大家介绍的是关于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(获得数组的个数)
还有注意类型转换问题,以后补充或者你自己写写吧.
最后上图:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。
原文链接:http://www.cnblogs.com/xuyiyixuan/p/7044426.html