第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

對(duì)choiceView組件的封裝

標(biāo)簽:
Html5

引言

在项目的开发过程中,遇到一个需求,如下图所示,当选项卡里面的选项个数大于等于5的时候,按照右箭头→形式展现,用户点击右箭头通过调用picker组件来选择选项;当选项卡里面的选项小于5个的时候直接以按钮的形式展示在页面上,用户通过点击进行选择;因为这里的选项个数是是动态的,为了方便调用以及日后维护,将代码项封装成组件,通过遍历arr[],去判断arr的长度是否大于等于5,然后展示具体的形式。


spacer.gifhttps://img1.sycdn.imooc.com//5cecd2b40001c15b04670434.jpg


1、首先定义一个choiceView立即执行函数
var choiceView = (function () {
   
})();

所有的函数都写在choiceView函数中

2、定义fillInfo函数,传三个参数,arr为选项卡的列表,defval为默认值,callback回调函数

首先通过document.createElement('div')创建最外层的包裹div 。

使用 if 判断语句通过 arr.length 的值判断生成哪种形式的dom;

如果大于等于5,给创建的div设计index的值为a;如果小于5,给div设置index的值为i;

最后返回创建好的dom结构;

    function fillInfo(arr, defval, callback) {
       
        sourceArr = arr;
        callbackAction = callback;
        var contentDiv = document.createElement('div');
            contentDiv.id = "contentDiv" + '';
            contentDiv.class = "contentDiv";
            
        // 判断按钮的个数是否大于5, 如果大于5返回右箭头格式,如果小于5,返回按钮展示的方式
        if (arr.length > 5) {

            let inp = document.createElement("input");
                inp.setAttribute('value', defval);
                inp.id = "cdfv";
                inp.readonly="readonly"
                contentDiv.appendChild(inp);
                contentDiv.setAttribute('index', 'a');
                contentDiv.onclick = didTapBtn;

         let img = document.createElement("img");
                img.src = "../img/02jiantouright@2x.png";
                contentDiv.appendChild(img);
                contentDiv.style = "float: right;";

            console.log(contentHtml)
            

        } else {

            for (var i = 0; i < arr.length; i++) {
                let button = document.createElement("button");
                button.innerText = arr[i];
                
                button.setAttribute('index', i);
                button.onclick = didTapBtn;
                button.style = "float: right; margin-left: 8px";
                contentHtml.appendChild(button);
            }
        }
        
        return contentHtml;
    }
3、定义didTapBtn函数,设置不同展示方式的点击事件

首先获取该元素的index值,判断index的值为是否为a,如果是a的话证明是右箭头格式的dom,点击直接调用picker组件,然后设置input的value为点击选中的值;否则的话就是按钮的形式展现的dom,点击直接返回点击相对应的按钮的值;

function didTapBtn() {

        var index = $(this).attr('index');
        console.log(index)

        if (index == 'a') {
            // 右箭头点击出现picker组件
            picker.setData(sourceArr);
            var showUserPickerButton = document.getElementById("contentHtml");
            var userResult = showUserPickerButton.firstElementChild;
            picker.show(function(items) {
                userResult.value = items[0];
                console.log(items[0])
            });

        } else {
            // 单个按钮点击
            callbackAction(sourceArr[index]);
        }

  }
4、通过以上操作,该组件就算完成整个封装了。

完成整个封装之后就可以直接使用了,首先在页面中引入该js文件,就不需要我们单独的调用了。首先通过拿localStorage中的“userInfoTest”来判断用户是否登录,如果登录,直接调用接口,从接口里面拿到相应的数据,遍历数据,生成相应的dom,点击dom调用相应的点击事件,返回数据。这样就可以了。




點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消