JS+PHP實(shí)現(xiàn)用戶輸入數(shù)字后顯示最大的值及所在位置
本文主要給大家介紹的是關(guān)于JS+PHP實(shí)現(xiàn)用戶輸入數(shù)字后顯示最大的值及所在位置的相關(guān)內(nèi)容,目的:分清JS PHP的區(qū)別,拓寬思維,下面來(lái)一起看看詳細(xì)的介紹:
分析
1.利用JS的prompt輸入用戶想要輸入的值.
2.利用HTML表單的text標(biāo)簽將輸入的值傳遞給PHP處理文件
3.PHP進(jìn)行數(shù)值判定,選出最大值和位置.
由淺入深:
1.在JS實(shí)現(xiàn)獲取數(shù)組的最大值.
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("最大數(shù)為"+max);
這里值得注意的是:不可以直接設(shè)置一個(gè)變量max=0,因?yàn)槟悴淮_定以后輸入的數(shù)字是小于0的還是大于0的[案列是大于0的],所以應(yīng)該選擇數(shù)組里面的一個(gè)數(shù),就數(shù)組的第一個(gè)好了max=a[0]
.
因?yàn)镴S語(yǔ)言是基于對(duì)象面向過程的,JS里面所有的事物都可以是對(duì)象,所以它的數(shù)組有屬性,length就是JS數(shù)組的一個(gè)獲得數(shù)組長(zhǎng)度的屬性,有了這個(gè)屬性就可以遍歷數(shù)組,然后進(jìn)行一一比較.
2.在JS實(shí)現(xiàn)獲得數(shù)組的最大值最小值和他們的位置(即在數(shù)組中第幾個(gè))
[注:本案例位置+1是為了方便查看,JS數(shù)組開始也是0]
var a=[10,20,40,30]; var max=a[0];//不能指定一個(gè)數(shù)為最大值[var max=0](除非是確定的情況下),應(yīng)該用數(shù)組里面的值,a[0]即讓數(shù)組第一個(gè)值作為比較的最大值. 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("最大數(shù)為"+max+"位置為第"+(maxaddress+1)+"個(gè)"); alert("最小數(shù)為"+min+"位置為第"+(minaddress+1)+"個(gè)");
3.現(xiàn)在改成用prompt來(lái)進(jìn)行用戶輸入獲得值來(lái)求最大值等等.
難點(diǎn):
1.如何輸入,用prompt
2.如何將一個(gè)字符串轉(zhuǎn)為數(shù)組,并且要轉(zhuǎn)換格式呢?
前提知識(shí):
1.將字符串分割 用到的是JS的string對(duì)象的spilt方法(注意,JS一切皆是對(duì)象,因此叫方法,不叫函數(shù))
2.讓一個(gè)"abc"字符串轉(zhuǎn)為number類型,怎么轉(zhuǎn).
字符串轉(zhuǎn)數(shù)字類型 ◆Number ★數(shù)字類型的字符串,轉(zhuǎn)換之后得到的數(shù)字。var n1="123"; var n2=Number(n1);//123 ★★非數(shù)字字符串,轉(zhuǎn)換之后得到是NaN。var n1="123abc"; var n2=Number(n1);//Nan ★小數(shù)類型的字符串,轉(zhuǎn)換之后得到的是原數(shù)字。var n1="123.23"; var n2=Number(n1);//123.23 ◆parseInt ★整數(shù)數(shù)字類型的字符串,轉(zhuǎn)換之后得到的整數(shù)數(shù)字。var n1="123"; var n2=parseInt(n1);//123 ★數(shù)字開頭的字符串,轉(zhuǎn)換之后得到的是前邊的數(shù)字。var n1="123abc"; var n2=parseInt(n1);//123 ★非數(shù)字開頭的字符串,轉(zhuǎn)換之后得到的是NaN。。var n1="abc123"; var n2=parseInt(n1);//NaN ★★小數(shù)類型的字符串,轉(zhuǎn)換之后取整(小數(shù)點(diǎn)直接省略)。var n1="123.53"; var n2=parseInt(n1);//123 var n1="-5.93"; var n2=parseInt(n1);//-5 ◆parseFloat ★整數(shù)數(shù)字類型的字符串,轉(zhuǎn)換之后得到的整數(shù)數(shù)字。var n1="123"; var n2=parseFloat(n1);//123 ★數(shù)字開頭的字符串,轉(zhuǎn)換之后得到的是前邊的數(shù)字。var n1="123abc"; var n2=parseFloat(n1);//123 ★非數(shù)字開頭的字符串,轉(zhuǎn)換之后得到的是NaN。var n1="abc123"; var n2=parseFloat(n1);//NaN ★★小數(shù)類型的字符串,轉(zhuǎn)換之后得到的是原數(shù)字。var n1="123.23"; var n2=parseFloat(n1);//123.23 轉(zhuǎn)布爾類型 ★數(shù)字和字符串轉(zhuǎn)完之后為true。 ★undefined、null、0轉(zhuǎn)完之后為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
以上分析完畢,開始書寫代碼
<script> //var a=new Array(-12,34,56,88,32,"aa","-34.33","-34.34",12.23); /*var a=new Array(prompt("請(qǐng)輸入數(shù)字")); document.write(a);*/ var b=prompt("請(qǐng)輸入要比較的數(shù),用\",\"號(hào)隔開"); var a=new Array(); a=b.split(","); // for(var j=0;j<a.length;j++){ // document.write(a[j]); // } alert(typeof(a)+" JS數(shù)組本質(zhì)是對(duì)象啊!!");//本質(zhì)是對(duì)象 PHP數(shù)組就是數(shù)組,沒有屬性(比如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("最大數(shù)為"+max+"位置為第"+(maxaddress+1)+"個(gè)"+"<br>"); document.write("最小數(shù)為"+min+"位置為第"+(minaddress+1)+"個(gè)"); </script>
4.以上是JS做處理,我的目的是讓JS+PHP+HTML聯(lián)動(dòng)起來(lái).
PHP是無(wú)法直接前端交互的,即他不能直接獲取用戶輸入的值,而要通過html 的form表單
JS數(shù)據(jù)傳給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"> 請(qǐng)輸入數(shù)字:<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("請(qǐng)輸入數(shù)字"); document.getElementById("shu").value=a; </script>
這里有個(gè)坑,如果將JS代碼寫在HTML的header處,會(huì)報(bào)錯(cuò),說Uncaught TypeError: Cannot set property 'value' of null
因?yàn)闉g覽器解析順序,在瀏覽器解析JS的時(shí)候(輸入數(shù)字完成的時(shí)候),瀏覽器開始解析HTML,雖然JS賦值了text的value,但被后面HTML的解析成了text的value為NULL,這是自相矛盾的.
所以盡可能的讓JS代碼寫在后面,你先解析HTML,然后我再給你值.(具體情況具體分析,不一定JS代碼都在頭部)
5.好了,HTML傳值了,現(xiàn)在看PHP
<?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)."個(gè)"; ?>
這里主要是看explode(將字符串拆分成數(shù)組) count(獲得數(shù)組的個(gè)數(shù))
還有注意類型轉(zhuǎn)換問題,以后補(bǔ)充或者你自己寫寫吧.
最后上圖:
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
PHP自動(dòng)識(shí)別當(dāng)前使用移動(dòng)終端
這篇文章主要為大家詳細(xì)介紹了PHP自動(dòng)識(shí)別當(dāng)前使用移動(dòng)終端,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05php獲取ip的三個(gè)屬性區(qū)別介紹(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
獲取用戶IP地址的三個(gè)屬性的區(qū)別HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR,需要的朋友可以參考下2012-09-09PHP簡(jiǎn)單讀取PDF頁(yè)數(shù)的實(shí)現(xiàn)方法
這篇文章主要介紹了PHP簡(jiǎn)單讀取PDF頁(yè)數(shù)的實(shí)現(xiàn)方法,涉及php針對(duì)文件的讀取及正則運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下2016-07-07php多層數(shù)組與對(duì)象的轉(zhuǎn)換實(shí)例代碼
通過json_decode(json_encode($object)可以將對(duì)象一次性轉(zhuǎn)換為數(shù)組,但是object中遇到非utf-8編碼的非ascii字符則會(huì)出現(xiàn)問題,比如gbk的中文,何況json_encode和decode的性能也值得疑慮2013-08-08PHP單元測(cè)試PHPUnit簡(jiǎn)單用法示例
這篇文章主要介紹了PHP單元測(cè)試PHPUnit簡(jiǎn)單用法,結(jié)合實(shí)例形式分析了PHPUnit的安裝、單元測(cè)試簡(jiǎn)單操作技巧,需要的朋友可以參考下2018-07-07php實(shí)現(xiàn)等比例不失真縮放上傳圖片的方法
這篇文章主要介紹了php實(shí)現(xiàn)等比例不失真縮放上傳圖片的方法,結(jié)合實(shí)例形式分析了php基于自定義函數(shù)實(shí)現(xiàn)等比例不失真縮放上傳圖片的具體功能定義與使用方法,需要的朋友可以參考下2016-11-11