一、動態放入後臺的值 將'應發'下的鍵數據${key}放入html中,記得使用轉義字元 `` ,這個符號實在鍵盤左上角的第二列第一個,來表示裡面寫的是html格式的代碼。 然後 ${this.data.data['應發'][i][key]}是遍歷每行的key對應的值, 然後再把html給放入你的ht ...
一、動態放入後臺的值
將'應發'下的鍵數據${key}放入html中,記得使用轉義字元 `` ,這個符號實在鍵盤左上角的第二列第一個,來表示裡面寫的是html格式的代碼。
然後 ${this.data.data['應發'][i][key]}是遍歷每行的key對應的值,
然後再把html給放入你的html文件中,用prepend()方法
for (var i = 0; i < this.data.data['應發'].length; i++) { for (var key in this.data.data['應發'][i]) { var money_html = `<div class="row"><label for="#"> ${key}</label> :<input name='yf' type="text" class="form-control" value="${this.data.data['應發'][i][key]}"></div>`; break; } $('#yf_money').prepend(money_html); } for (var i = 0; i < this.data.data['應扣'].length; i++) { for (var key in this.data.data['應扣'][i]) { var money_html = ` <div class="row"><label for="#"> ${key}</label> :<input name="yk" type="text" class="form-control" value="${this.data.data['應扣'][i][key]}"></div>`; break; } $('#yk_money').prepend(money_html); }
二、然後動態返回數據
大概返回的數據就是對象下放兩個列表(前端叫做對象){字典下幾條列表(前端叫做數組)},然後再放兩個字元串。
下麵是返回的大概格式。
'data':{ 'yf':[{'一':1},{'二':2},{'三':3}], 'yk':[{'四':4},{'二':5},{'三':6}], 'yy':'yy', 'mm':'mm' }
我的想法是這樣的,由於我是前端小白啊,能力範圍下我只能獲取到字典下的列表中的key列表和value列表。
你也可以理解為獲取對象中的數組中的key數組和value數組
獲取input的name為yf的所有數據,獲取value數組,用到each.(function(){ });的方法。
$("input[name='yf']").each(function(){ yf_value.push($(this).val()); }); $("input[name='yk']").each(function(){ yk_value.push($(this).val()); });
然後獲取label下的key數組,這裡遇到另一個問題,就是我獲取的label值是整個HTML的label值,但我想要獲取的key數組是從第4個開始算起的,而且長度每次也是有局限的,所以這裡就利用到了上面的yf_value.length,來獲取我需要的數據。
$('label').each(function(){ b.push($(this).text()); }); yf_key= b.slice(4,yf_value.length+4); yk_key= b.slice(yf_value.length+4,yf_value.length+4+yk_value.length);
接下來,就是比較難受一點的將兩個數組拼在一個對象里了,這裡呢,一定要註意if條件里的
( i==j )
這個如果寫錯的話,各種數據格式都會出現,一開始我以為是var的問題,改成let之後發現也並沒有什麼卵用。還有就是,剛開始寫的時候,我是把數據push進yf和yk數組的
yf.push(dict);
yk.push(dict1);
其實好像和下麵的寫法也差不多,不過下麵的會舒服一點
yf[i]=dict;
yk[i]=dict;
var yf=[];
var yk=[];
console.log(yk_key); for (var i=0;i<yf_key.length;i++){ var dict={}; for(var j=0;j<yf_value.length;j++){ if(i==j){ dict[yf_key[i]]=yf_value[i]; yf[i]=dict; } } } for (var i=0;i<yk_key.length;i++){ var dict1={}; for(var j=0;j<yk_value.length;j++){ if(i==j){ dict1[yk_key[i]]=yk_value[i]; yk[i]=dict1; } } }
總結:這裡主要用的思想呢,大概有下麵這幾個
1.獲取多個input的值(用each()方法去遍歷name),獲取多個label的值(直接用each),有人可能會問,用id啊,但是重點是他這個input是動態生成的啊!!,用id只能獲取一個值,這裡你需要獲取多個Input,所以id已經gg了
2.還有就是label的獲取,取第四個開始的數據,用到slice切片,
3.怎樣獲取後端動態返回的數據放入html頁面顯示,用到${}的方法,然後再用prepend方法加入到對應html的id下
4.然後就是將key列表和value列表組裝成字典,用到兩個for迴圈,然後判斷i==j,再賦值即可。(將兩個列表放入一個字典)。
前端實習第20天,好像是吧,繼續加油肝,程式猿沒有下班,只有自願加班。!!!