麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > JavaScript > 正文

javascript巧用eval函數組裝表單輸入項為json對象的方法

2024-05-06 16:25:15
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了javascript巧用eval函數組裝表單輸入項為json對象的方法,實例分析了JavaScript使用eval函數動態構造json對象的相關技巧,需要的朋友可以參考下

本文實例講述了javascript巧用eval函數組裝表單輸入項為json對象的方法。分享給大家供大家參考,具體如下:

在ajax方式做web開發時,經常會遇到會保存前,收集表單輸入項,組成json對象,然后把對象直接post到服務端的場景

常規做法是在js里寫類似如下的代碼:

 

 
  1. var myObj = {};  
  2. myObj.x = document.getElementById("x").value;  
  3. myObj.y = document.getElementById("y").value; 
  4. //...  
  5. //然后ajax post或get提交 

表單元素不多的時候,這樣還好,但是如果一個表單有好幾十項甚至更多輸入項的時候,寫這種代碼就太費勁了。

好在javascript中有一個邪惡的eval函數,可以幫我們完成一些類似c#反射的工作,比如下面這樣:

 

 
  1. eval('A={}'); 
  2. if (A.b==undefined) 
  3. A.b = {}; 
  4. eval('A.b.c = 1'); 
  5. alert(A.b.c); 

這樣,我們就動態創建了一個復合對象A,明白其中原理后,可以對表單做些改進:

 

 
  1. 運單號:<input type="text" name="AwbPre" value="112" style="width:40px"/>-<input type="text" name="AwbNo" value="12312311"/><br/> 
  2. 結算方式: 
  3. <select name="SettlementMode" style="width:100px"
  4. <option value="CASH" selected="selected">現金</option> 
  5. <option value="MONTH">月結</option> 
  6. </select> 
  7. <br/> 
  8. 不需要賦值的屬性:<input type="input" name="NotMe" value="NotMe ..." isModel="false"/> 
  9. <script type="text/javascript"
  10. function setFormModel(modelName){ 
  11. eval(modelName + "={}"); 
  12. var inputArr = document.getElementsByTagName("INPUT"); 
  13. for(var i=0;i<inputArr.length;i++){ 
  14. var isModel = inputArr[i].getAttribute("isModel"); 
  15. var itemName = inputArr[i].name; 
  16. var itemValue = inputArr[i].value;  
  17. if(isModel!="false"){ 
  18. eval(modelName + "." + itemName + "='" + itemValue + "';"); 
  19. }  
  20. var selectArr = document.getElementsByTagName("SELECT"); 
  21. for(var i=0;i<selectArr.length;i++){ 
  22. var isModel = selectArr[i].getAttribute("isModel"); 
  23. var itemName = selectArr[i].name; 
  24. var itemValue = selectArr[i].value;  
  25. if(isModel!="false"){ 
  26. eval(modelName + "." + itemName + "='" + itemValue + "';"); 
  27. }  
  28. return modelName;  
  29. setFormModel("AwbModel"); 
  30. alert("單號:" + AwbModel.AwbPre + "-" + AwbModel.AwbNo + "/n結算方式:" + AwbModel.SettlementMode + "/n不該有的屬性:" + AwbModel.NotMe); 
  31. </script> 

這樣,只要form元素的name屬性正確設置,需要收集表單對象時,調用一下setFormModel函數,就能快速得到一個json對象(當然這只是示例,僅處理了一級屬性的情況,如果有多級屬性,大家自己去擴展吧,無非就是字符串上做些文章)

希望本文所述對大家JavaScript程序設計有所幫助。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 久久91精品 | 一区二区三区视频在线观看 | 黄色片在线观看网站 | 成人国产精品一区 | 欧美三级欧美成人高清www | 免费a级毛片永久免费 | 香蕉黄色网 | 久草中文网 | 红杏亚洲影院一区二区三区 | 日韩精品一二三 | 欧美成人理论片乱 | 在线成人免费观看www | 蜜桃av鲁一鲁一鲁一鲁 | 亚洲小视频网站 | 国产男女 爽爽爽爽视频 | 曰韩一级片 | 毛片视频在线免费观看 | 欧美一级色片 | 97中文| 中文欧美日韩 | 黄色大片免费看 | 午夜精品福利在线观看 | 久久国产综合精品 | 成人羞羞在线观看网站 | 日本欧美一区二区 | 欧美三级欧美成人高清www | 中国产一级毛片 | 精品国产一区二区三区免费 | 中文字幕在线观看网址 | 久久久久久久.comav | 中文字幕在线观看免费视频 | 神马顶级推理片免费看 | 插插操 | 视频一区免费观看 | 色妇视频 | 狠狠色噜噜狠狠狠米奇9999 | 亚洲国产成人一区 | 亚洲日本韩国在线观看 | 欧美综合日韩 | 精品久久久一二三区播放播放播放视频 | 伦一区二区三区中文字幕v亚洲 |