日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - 動態(tài)創(chuàng)建對象,動態(tài)加數(shù)據(jù)

瀏覽:250日期:2023-03-27 16:50:33

問題描述

javascript - 動態(tài)創(chuàng)建對象,動態(tài)加數(shù)據(jù)

如圖:1.左邊兩側(cè)的表格都是點擊 上邊“新增”按鈕動態(tài)添加出來的。點擊左側(cè)表格某一行,可以在右側(cè)創(chuàng)建表格(任意多少行都行),左右是一對多關(guān)系。2.想在左側(cè)新增行的時候,創(chuàng)建一個獨立對象(意思就是每個行對應(yīng)的對象都不一樣), 然后右側(cè)點擊新增后,新建出來的行,是帶幾個下拉菜單的,用戶選完之后,就會點擊開始填報,在點擊開始填報按鈕時,需要把右邊的數(shù)據(jù)和左邊的數(shù)據(jù),都存進左邊某一行的對象里。(左邊每一行對應(yīng)一個對象)3.左右表格上方都有’刪除’按鈕,如果點擊左側(cè)’刪除’按鈕,那么這一行的存儲對象就被刪了,于是右邊和它對應(yīng)的數(shù)據(jù)也沒餓了。如果選中右側(cè)某一行,點擊’刪除’,那么只在左側(cè)的對象里刪除右側(cè)這一行的數(shù)據(jù)存儲。

框架:用了Bootstrap jQuery

下面是代碼只有我說的添加tr刪除tr的功能實現(xiàn)。并沒有創(chuàng)建對象和添加數(shù)據(jù),有沒有老哥有思路的,在線等,急!!!

代碼:

<p class='col-md-5 clearfix'><button class='button1'>新增</button><button class='button1_del'>刪除</button><table border='1px solid #000' class='text-center'> <thead class='zType_thead text-center'><tr> <th></th> <th>納稅人識別號</th> <th>納稅人名稱</th></tr> </thead> <tbody class='zType_tbody'> </tbody></table> </p> <p class='col-md-offset-1 col-md-5'><button class='button2'>新增</button><button class='button2_del'>刪除</button><button type='submit'>開始填報</button><form method='post'> <table border='1px solid #000'><thead> <tr class='zType_table_th'><th>計算期類型</th><th>期間</th><th>征收方式</th> </tr></thead><tbody class='zType_all'></tbody> </table></form> </p>

js代碼:

//點擊選中右側(cè)表格的某一行$(’.zType_all’).on(’click’,’tr’,function(){//點擊某一行 此行背景色改變,其他行恢復(fù)白色。點擊的那一行添加了name屬性,然后刪除其他tr的name值,為的是之后聯(lián)系起來,有個name屬性作為橋梁,比如刪除,就可以在刪除掉對應(yīng)帶有name值的tr$(’.zType_all’).children().css({'background':'#fff','color':'#000'}).removeAttr(’name’); $(this).css({'background':'#bfaadc','color':'#000'}); if(!$(this).attr(’name’)){ $(this).attr('name',’zType_tr_checked1’); }})//右側(cè)刪除按鈕 點擊刪除帶有name的tr$(’.button2_del’).on(’click’,function(){ $(’tr[name=zType_tr_checked1]’).remove();})//左側(cè)添加按鈕$(’.button1’).on(’click’,function(){ $(’.zType_tbody’).append(’<tr><td><span class='glyphicon glyphicon-chevron-right'></span></td><td><input type='text' name='shibiehao'></td><td><input type='text' name='mingcheng'></td></tr>’);})//選中左側(cè)表格的tr$(’.zType_tbody’).on(’click’,’tr’,function(){ //依然還是點擊某一行 此行背景色改變,其他行恢復(fù)白色。點擊的那一行添加了name屬性,然后刪除其他tr的name值,為的是之后聯(lián)系起來,有個name屬性作為橋梁,比如刪除,就可以在刪除掉對應(yīng)帶有name值的tr $(’.zType_tbody’).children().css({'background':'#fff'}).removeAttr(’name’); $(this).css({'background':'#bfaadc'}).children().eq(0).children() if(!$(this).attr(’name’)){ $(this).attr('name',’zType_tr_checked2’); }})//點擊左側(cè)刪除按鈕,刪掉左側(cè)選中的tr$(’.button1_del’).on(’click’,function(){ $(’tr[name=zType_tr_checked2]’).remove();})

問題解答

回答1:

簡單說下我的思路:每個 DOM 結(jié)構(gòu)維護一個數(shù)據(jù)對象,假設(shè)你的 HTML 結(jié)構(gòu)為(emmet語法):

.app-test > .col-md-5.app-test-taxpayer + .col-md-5.app-test-report

那么:

上面分為三個組件

.app-test 負責維護所有納稅人數(shù)據(jù)(即左側(cè)表格);

左側(cè)列表的每個 tr 維護對應(yīng)納稅人的數(shù)據(jù)(即右側(cè)表格);

兩側(cè)的所有 tr 都可以視為一個小的組件 —— 麻雀雖小五臟俱全;

總結(jié)出為:整個功能組件 > 左側(cè) tr 組件 + 右側(cè) tr 組件;

你可以理解為父子組件傳值;

大致實現(xiàn)如下:首先,兩個表格屬于一個功能模塊,假設(shè)為 TaxesReport:

(function($){ // 左側(cè) tr 組件 var TaxesReportTaxpayer = function(trs){return this; };// 右側(cè) tr 組件 var TaxesReportReporter = function(trs, taxpayer){// 當前納稅人的報表,對應(yīng)右側(cè)的列表條目this.reports = []; return this; };// 一個獨立的功能模塊 var TaxesReport = function(element){// 全部納稅人,即左側(cè)列表對應(yīng)的數(shù)據(jù)源this.taxpayers = [];// 當前選擇的納稅人,即左側(cè)列表中的紫色高亮行this.currentTaxpayer = null; };// 應(yīng)用實例 - 假設(shè): .test > .col-md-5.clearfix var trDemo = new TaxesReport( $(’.app-test’) ); })(jQuery);

TaxesReportTaxpayer 和 TaxesReportReporter 都需要傳入一個 TaxesReport 實例,用于【子組件調(diào)用父組件】 方法或數(shù)據(jù)

點擊左側(cè)新建按鈕新建納稅人:

// TaxesReport() 中var _that = this, $taxpayerAdd = $(’.button1), $taxpayerList = $(’.zType_tbody’); // 新建納稅人 $taxpayerAdd.on(’click’, function(){ // 實例化納稅人組件 var taxpayer = new TaxesReportTaxpayer(_that);// 增加行 $taxpayerList.append( taxpayer.item );// 新增數(shù)據(jù) _that.setTaxpayer( taxpayer.data );// 自動高亮 if(!_that.currentTaxpayer) {_that.currentTaxpayer = taxpayer; }});

右側(cè)新增納稅人的報表類型,如:

// TaxesReport() 中var _that = this, $reportAdd = $(’.button2’), $reportList = $(’.zType_all’); // 新增納稅人報表類型$reportAdd.on(’click’, function(){ // 請從左側(cè)選擇一個納稅人 if( !_that.currentTaxpayer ) {console.log(’請從左側(cè)選擇一個納稅人’);return; }// 實例化報表組件 var report = new TaxesReportReporter(_that);// 增加行 $reportList.append( report.item );// 增加數(shù)據(jù) // _that.currentTaxpayer.setReport(report.data) _that.currentTaxpayer.item.trigger(’setReport’, report.data);// 查看是否添加成功 console.log( _that.currentTaxpayer.reports );});

刪除的時候,除了刪除對應(yīng)的 tr 結(jié)構(gòu),刪除 tr 對應(yīng)的數(shù)據(jù),涉及到的兩個數(shù)據(jù)對象(左側(cè)的 taxpayers 和 右側(cè)的 reports) 都是數(shù)組結(jié)構(gòu),你可以為自定義鍵名方法,為新的實例(納稅人或報表)創(chuàng)建唯一標識,并使用 <tr data-identify='唯一標識'>···</tr> 建立起取值參數(shù)。

鑒于你可能都是靜態(tài)數(shù)據(jù)(非從數(shù)據(jù)庫中取出的帶有主鍵標識的數(shù)據(jù)),且可能刪除數(shù)組中的任意一個條目進而導(dǎo)致數(shù)組下標丟失,所以,最好的方法是建立一個可創(chuàng)建不重復(fù)值的方法,用以給生成的組件(左側(cè)或右側(cè))生成并添加一個唯一標識。

回答2:

產(chǎn)生一個數(shù)據(jù)緩存,在 key-model 的形式保存數(shù)據(jù),右邊的 model 里有一個 children 保存對應(yīng)的右側(cè)數(shù)據(jù)

左側(cè)切換的時候,直接從 key-model 數(shù)據(jù)緩存里找到對應(yīng)的 model.children,重繪右側(cè)的列表

左側(cè)添加刪除的時候?qū)?yīng)的從 key-model 數(shù)據(jù)緩存里添加刪除就好

右側(cè)添加刪除的時候也是一樣的,這個時候可以對找到對應(yīng)的 model.children

由于使用 jQuery,jQuery 可以通過 data() 把數(shù)據(jù)附加到 DOM 上,所以上述 key-model 可以直接采用之種形式把每個 model 附加到每行(左側(cè))的 DOM 上,右側(cè)附加不附加問題都不大

思路如此,代碼你可以先嘗試寫下

標簽: JavaScript
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产99在线| 久久久久中文| 中文字幕一区二区三区日韩精品| 香蕉久久99| 伊人精品久久| 精品国产aⅴ| 亚洲午夜黄色| 国产免费av国片精品草莓男男 | 国产va在线视频| 亚洲经典在线| 毛片不卡一区二区| 国产二区精品| 欧美激情网址| 中文一区二区| 国产日韩亚洲| 亚洲国产一区二区三区在线播放| 日韩精品成人| 五月天激情综合网| 国产精品99精品一区二区三区∴ | 亚洲欧美视频| 国产999精品在线观看| 一区二区亚洲视频| 久久婷婷久久| 国产精品毛片视频| 美女黄网久久| 欧洲一区二区三区精品| 亚洲综合激情在线| 欧美日韩中文一区二区| 美女国产一区二区三区| 一二三区精品| 亚洲小说欧美另类婷婷| 久久伊人国产| 日本免费新一区视频| 好吊一区二区三区| 国产成年精品| 亚洲精品高潮| 在线国产一区二区| 国产网站在线| 久久av网站| 日韩国产在线观看| 久久成人精品| 亚洲欧美伊人| 激情综合激情| 超级白嫩亚洲国产第一| 欧美精品国产| 老司机久久99久久精品播放免费| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 国产精品亚洲四区在线观看| 狠狠爱www人成狠狠爱综合网| 天堂中文av在线资源库| 国产精品theporn| 日韩一区中文| 亚洲一区亚洲| 亚洲综合精品| 亚洲男女自偷自拍| 亚洲欧美日韩精品一区二区| 极品日韩av| 水蜜桃久久夜色精品一区| 91成人小视频| 国产精品一页| 你懂的国产精品永久在线| 久久黄色影视| 日韩不卡免费视频| 尤物在线精品| 久久久久国产精品一区三寸 | 日韩在线欧美| 国产精品国码视频| 97久久中文字幕| 成人av二区| 不卡在线一区| 国产一区2区| 国产精品一区二区三区美女| 亚洲人成亚洲精品| 日韩午夜av在线| 久久久久网站| 日韩欧美一区二区三区免费看| 国产欧美日韩一区二区三区在线| 亚洲视频电影在线| 免费精品视频最新在线| 亚洲成人一区| 不卡中文字幕| 四虎4545www国产精品| 久久wwww| 欧美精品第一区| 国产免费播放一区二区| 免费久久精品视频| 午夜在线精品偷拍| 好看不卡的中文字幕| 欧美日韩免费观看一区=区三区| 蜜桃一区二区三区| 色婷婷亚洲mv天堂mv在影片| 你懂的国产精品| 国产精品久久久久久久免费观看| 日产午夜精品一线二线三线| 精品成av人一区二区三区 | 国产精品99一区二区| 99精品美女| 久久天堂精品| 亚洲视频播放| 六月天综合网| 亚洲精品日韩久久| 国产日产精品_国产精品毛片| 久久激情综合网| 精品三级av在线导航| 国产一区二区三区不卡视频网站 | 欧美日韩亚洲一区在线观看| 爽好久久久欧美精品| 久久成人亚洲| 日韩精品一卡二卡三卡四卡无卡| 久久亚洲国产精品一区二区| 狠狠爱www人成狠狠爱综合网| 人人爽香蕉精品| 欧美日韩亚洲一区在线观看| 日本aⅴ亚洲精品中文乱码| 国产日产精品_国产精品毛片| 欧美1区二区| 久久久久蜜桃| 香蕉成人av| 国产高清一区| 亚洲精品大片| 日本免费在线视频不卡一不卡二| 国产精品久久久久久久久免费高清 | 日韩精品欧美精品| 国产精品欧美日韩一区| 在线天堂中文资源最新版| 欧美精选一区二区三区| 亚洲一二av| 亚洲精品国产精品粉嫩| 国产精品综合色区在线观看| 美日韩精品视频| 一级成人国产| 日韩精品一二三四| 亚洲免费资源| 麻豆久久一区| 九色精品91| 91精品国产经典在线观看| 精品国产中文字幕第一页| 日韩精品dvd| 美女国产精品| 久久亚洲资源中文字| 亚洲精华国产欧美| 国产精品尤物| 欧美日韩在线播放视频| 日本成人中文字幕| 久久夜夜操妹子| 视频在线观看91| 老司机精品视频网| 国产一级久久| 国内精品麻豆美女在线播放视频| 欧美网站在线| 国产成人精品一区二区三区在线| 视频一区视频二区中文| 国产成人精品亚洲线观看| 日韩中文字幕1| 国产一区二区三区黄网站 | 国产成人黄色| 亚洲日韩中文字幕一区| 精品国产亚洲一区二区三区大结局 | 亚洲麻豆一区| 一区二区三区四区日本视频| 亚洲精一区二区三区| 国产日韩电影| 国产日韩在线观看视频| 亚洲国产日韩欧美在线| 国产96在线亚洲| 日本亚洲最大的色成网站www | 亚洲精品a级片| 麻豆国产91在线播放| 国产亚洲毛片| 日韩专区精品| 免费视频一区二区三区在线观看| 日韩影院免费视频| 国产激情综合| 亚洲美洲欧洲综合国产一区| 久久99国产精品视频| 午夜在线一区| 狠狠干成人综合网| 久久激情婷婷| 国产精品99在线观看| 亚洲精品欧洲| 亚洲综合不卡| 国产视频亚洲| 中文日韩欧美| 韩国三级一区| 国产成人精品一区二区三区免费 | 国产精品毛片| 国产综合亚洲精品一区二| 精品国产美女a久久9999| 日本精品久久| 天堂久久一区| 综合一区av| 亚洲一区二区三区高清不卡| 亚洲福利一区| 亚洲二区视频| 激情婷婷欧美| 亚洲欧洲一区| 日韩在线观看一区二区| 免费在线观看不卡| 99亚洲精品| 美国欧美日韩国产在线播放|