小程序 商城多規(guī)格選擇 添加 簡易demo

HTML

<view id="vmsimulatedDATA">

? <view class='productConten'>

? ? <view class="productDelcom" wx:for="{{simulatedDATA.specifications}}" wx:for-index='n' wx:for-item="ProductItem">

? ? ? <view class='p'>{{ProductItem.name}}</view>

? ? ? <ul class="productFooterlist clearfix">

? ? ? ? <li wx:for="{{ProductItem.item}}" wx:for-item="oItem" bindtap="specificationBtn" data-show="{{oItem.isShow}}" class="{{oItem.isShow?'':'noneActive'}} {{subIndex[n] == index?'productActive':''}}" data-ol="{{subIndex[n]}}" data-name="{{oItem.name}}" data-n="{{n}}" data-index="{{index}}">{{oItem.name}}</li>

? ? ? </ul>

? ? </view>

? </view>

? <view wx:if="{{boxArr.id}}">

? ? {{boxArr.id+'--'+boxArr.price}}

? </view>

</view>

js

Page({

? data: {

? ? simulatedDATA: {

? ? ? difference: [{

? ? ? ? ? id: "19",

? ? ? ? ? price: "200.00",

? ? ? ? ? stock: "19",

? ? ? ? ? difference: "紅色,x"

? ? ? ? },

? ? ? ? {

? ? ? ? ? id: "20",

? ? ? ? ? price: "300.00",

? ? ? ? ? stock: "29",

? ? ? ? ? difference: "白色,x"

? ? ? ? },

? ? ? ? {

? ? ? ? ? id: "21",

? ? ? ? ? price: "300.00",

? ? ? ? ? stock: "10",

? ? ? ? ? difference: "黑色,x"

? ? ? ? },

? ? ? ? {

? ? ? ? ? id: "21",

? ? ? ? ? price: "300.00",

? ? ? ? ? stock: "10",

? ? ? ? ? difference: "黑色,xl"

? ? ? ? },

? ? ? ? {

? ? ? ? ? id: "24",

? ? ? ? ? price: "500.00",

? ? ? ? ? stock: "10",

? ? ? ? ? difference: "白色,xl"

? ? ? ? }

? ? ? ],

? ? ? specifications: [{

? ? ? ? ? name: "顏色",

? ? ? ? ? item: [{

? ? ? ? ? ? ? name: "白色"

? ? ? ? ? ? },

? ? ? ? ? ? {

? ? ? ? ? ? ? name: "黑色"

? ? ? ? ? ? },

? ? ? ? ? ? {

? ? ? ? ? ? ? name: "紅色"

? ? ? ? ? ? }

? ? ? ? ? ]

? ? ? ? },

? ? ? ? {

? ? ? ? ? name: "尺碼",

? ? ? ? ? item: [{

? ? ? ? ? ? ? name: "x"

? ? ? ? ? ? },

? ? ? ? ? ? {

? ? ? ? ? ? ? name: "xl"

? ? ? ? ? ? }

? ? ? ? ? ]

? ? ? ? }

? ? ? ]

? ? },

? ? selectArr: [], //存放被選中的值

? ? shopItemInfo: {}, //存放要和選中的值進行匹配的數(shù)據(jù)

? ? subIndex: [], //是否選中 因為不確定是多規(guī)格還是但規(guī)格宝剖,所以這里定義數(shù)組來判斷

? ? content: "",

? ? specifications:'',

? ? boxArr: {},

? },

? onLoad() {

? ? var self = this

? ? var simulatedDATA = self.data.simulatedDATA

? ? var difference = self.data.simulatedDATA.difference

? ? var shopItemInfo = self.data.shopItemInfo

? ? var specifications = self.data.simulatedDATA.specifications

? ? for (var i in difference) {

? ? ? shopItemInfo[difference[i].difference] =

? ? ? ? difference[i]; //修改數(shù)據(jù)結(jié)構(gòu)格式,改成鍵值對的方式蹦玫,以方便和選中之后的值進行匹配

? ? }

? ? for (var i = 0; i < specifications.length; i++) {

? ? ? for (var o = 0; o < specifications[i].item.length; o++) {

? ? ? ? specifications[i].item[o].isShow = true

? ? ? }

? ? }

? ? simulatedDATA.specifications = specifications

? ? self.setData({

? ? ? simulatedDATA: simulatedDATA,

? ? ? shopItemInfo: shopItemInfo,

? ? ? specifications: specifications

? ? })

? },

? onShow() {


? },

? specificationBtn(e) {

? ? var n=e.currentTarget.dataset.n

? ? var index = e.currentTarget.dataset.index

? ? var item = e.currentTarget.dataset.name

? ? var self = this;

? ? var selectArr = self.data.selectArr

? ? var subIndex = self.data.subIndex

? ? var boxArr = self.data.boxArr

? ? var shopItemInfo = self.data.shopItemInfo

? ? if (selectArr[n] != item) {

? ? ? selectArr[n] = item;

? ? ? subIndex[n] = index;

? ? } else {

? ? ? // self.selectArr[n] = "";

? ? ? // self.subIndex[n] = -1; //去掉選中的顏色

? ? }

? ? self.checkItem();

? ? var arr = shopItemInfo[selectArr];

? ? if (arr) {

? ? ? boxArr.id = arr.id;

? ? ? boxArr.price = arr.price;

? ? }

? ? self.setData({

? ? ? selectArr: selectArr, subIndex: subIndex, boxArr: boxArr, shopItemInfo: shopItemInfo

? ? })

? ? console.log(boxArr)

? },

? checkItem() {

? ? var self = this;

? ? var simulatedDATA=self.data.simulatedDATA

? ? var option = self.data.simulatedDATA.specifications;

? ? var result = []; //定義數(shù)組存儲被選中的值

? ? for (var i in option) {

? ? ? result[i] = self.data.selectArr[i] ? self.data.selectArr[i] : "";

? ? }

? ? for (var i in option) {

? ? ? var last = result[i]; //把選中的值存放到字符串last去

? ? ? for (var k in option[i].item) {

? ? ? ? result[i] = option[i].item[k].name; //賦值涛浙,存在直接覆蓋,不存在往里面添加name值

? ? ? ? option[i].item[k].isShow = self.isMay(result); //在數(shù)據(jù)里面添加字段isShow來判斷是否可以選擇

? ? ? }

? ? ? result[i] = last; //還原然磷,目的是記錄點下去那個值郑趁,避免下一次執(zhí)行循環(huán)時避免被覆蓋

? ? }

? ? simulatedDATA.specifications = option

? ? self.setData({

? ? ? simulatedDATA: simulatedDATA

? ? })

? },

? isMay(result) {

? ? for (var i in result) {

? ? ? if (result[i] == "") {

? ? ? ? return true; //如果數(shù)組里有為空的值,那直接返回true

? ? ? }

? ? }

? ? return !this.data.shopItemInfo[result] ?

? ? ? false :

? ? ? this.data.shopItemInfo[result].stock == 0 ?

? ? ? false :

? ? ? true; //匹配選中的數(shù)據(jù)的庫存姿搜,若不為空返回true反之返回false

? },

})

css


#vmsimulatedDATA {

? background: #fff;

}

#vmsimulatedDATA .clearfix:after {

? display: block;

? overflow: hidden;

? clear: both;

? height: 0;

? visibility: hidden;

? content: "";

}

#vmsimulatedDATA .productConten {

? margin-bottom: 10px;

}

#vmsimulatedDATA .productDelcom {

? padding: 5px 20px;

? color: #323232;

? font-size: 12px;

}

#vmsimulatedDATA .productDelcom .p {

? padding: 10px 0;

? font-size: 14px;

}

#vmsimulatedDATA .productFooterlist li {

? border: 1px solid #f4f4f4;

? border-radius: 2px;

? color: #606060;

? text-align: center;

? float: left;

? min-width: 30px;

? margin-right: 5px;

? padding: 2px 5px;

? margin-bottom: 5px;

}

#vmsimulatedDATA .productFooterlist li.productActive {

? background-color: #c41e3a;

? color: #fff;

? border: 1px solid #c41e3a;

}

#vmsimulatedDATA .productFooterlist li.noneActive {

? background-color: #ccc;

? opacity: 0.4;

? color: #000;

? pointer-events: none;

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寡润,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子舅柜,更是在濱河造成了極大的恐慌梭纹,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件致份,死亡現(xiàn)場離奇詭異变抽,居然都是意外死亡,警方通過查閱死者的電腦和手機氮块,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進店門绍载,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人滔蝉,你說我怎么就攤上這事逛钻。” “怎么了锰提?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵曙痘,是天一觀的道長。 經(jīng)常有香客問我立肘,道長边坤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任谅年,我火速辦了婚禮茧痒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘融蹂。我一直安慰自己旺订,他們只是感情好弄企,可當我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著区拳,像睡著了一般拘领。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上樱调,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天约素,我揣著相機與錄音,去河邊找鬼笆凌。 笑死圣猎,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的乞而。 我是一名探鬼主播送悔,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼爪模!你這毒婦竟也來了欠啤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤呻右,失蹤者是張志新(化名)和其女友劉穎跪妥,沒想到半個月后鞋喇,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體声滥,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年侦香,在試婚紗的時候發(fā)現(xiàn)自己被綠了落塑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡罐韩,死狀恐怖憾赁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情散吵,我是刑警寧澤龙考,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站矾睦,受9級特大地震影響晦款,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜枚冗,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一缓溅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赁温,春花似錦坛怪、人聲如沸淤齐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽更啄。三九已至,卻和暖如春沉帮,著一層夾襖步出監(jiān)牢的瞬間锈死,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工穆壕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留待牵,地道東北人。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓喇勋,卻偏偏與公主長得像缨该,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子川背,可洞房花燭夜當晚...
    茶點故事閱讀 43,666評論 2 350

推薦閱讀更多精彩內(nèi)容