JS和PHP代碼實現使用者輸入數字後顯示最大的值

來源:互聯網
上載者:User
1.利用JS的prompt輸入使用者想要輸入的值.

2.利用HTML表單的text標籤將輸入的值傳遞給PHP處理檔案

3.PHP進行數值判定,選出最大值和位置.

本文主要和大家介紹了JS+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(獲得數組的個數)

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

最後:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.