JS+PHP實現用戶輸入數字後取得最大的值並顯示為第幾個

編程語言 PHP HTML 技術 科技優家 2017-06-25

目的:分清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(獲得數組的個數)

還有注意類型轉換問題,以後補充或者你自己寫寫吧.

最後上圖:

JS+PHP實現用戶輸入數字後取得最大的值並顯示為第幾個JS+PHP實現用戶輸入數字後取得最大的值並顯示為第幾個JS+PHP實現用戶輸入數字後取得最大的值並顯示為第幾個

相關推薦

推薦中...