问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

现在有3个ul,想用js在里面生成li,3个ul分别代表年,月,日,li里面就是其值,用于下拉菜单

发布网友 发布时间:2022-04-19 23:58

我来回答

2个回答

懂视网 时间:2022-04-20 04:19

这次给大家带来Vue.jS的ul-li标签仿select标签,使用Vue.jS的ul-li标签仿select标签注意事项有哪些,下面就是实战案例,一起来看一下。

目标:用ul-li标签结合Vue.js知识做一个模仿select标签的下拉选项列表。

知识点:

组件的写法及运用

组件之间的数据传递(props的运用)

组件之间的数据传递($emit的运用)

动态数据的绑定(v-bind)

自定义事件通信

效果图:

1、未做任何操作前,下拉列表为隐藏状态

2、点击输入框显示下拉列表

3、 点击列表项,输入框值跟随改变

PS: 为了演示data1, data2两组数据的绑定,实例中创建了两个列表

html代码:

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>ul-li模仿select下拉菜单</title>
 <link rel="stylesheet" type="text/css" href="style.css" rel="external nofollow" />
 <script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
 <p id="demo">
 <my-select btn-name='search' v-bind:list='data1' style='float: left;margin-right: 2rem;'></my-select>
 <my-select btn-name='搜索' v-bind:list='data2' style='float: left;'></my-select>
 </p>
</body>
</html>

JavaScript代码

<script type="text/javascript">
//注册全局组件
//在my-select组件中套用ul-select组件,my-select为父组件ul-select为子组件
Vue.component('my-select', {
 //组件中data要写成函数形式
 data() {
 return {
 ulShow: false, //默认ul不显示,单击input改变ul的显示状态
 selectVal: '' //选项值,input的值与选项值动态绑定
 }
 },
 //父组件向子组件通信用props
 props: ['btnName', 'list'],
 template: `
 <p id="selectWrap">
 <p class="searchBox">
 <input type="text" :value="selectVal" @click='ulShow = !ulShow'/>
 <a href="#" rel="external nofollow" class="search" v-text='btnName'></a>
 </p>
 <my-ul v-show='ulShow' v-bind:list='list' v-on:receive='changeVal'></my-ul>
 </p>
 `,
 methods: {
 changeVal(value) {
 this.selectVal = value
 }
 }
})
//子组件
Vue.component('my-ul', {
 props: ['list'],
 template: `
 <ul class="skill">
 <li v-for='item of list' v-on:click='selectLi(item)'>{{item}}</li>
 </ul>
 `,
 methods: {
 selectLi: function(item) {
 //$emit触发当前实例上的自定义事件 receive
 this.$emit('receive', item);
 }
 }
})
//创建Vue实例
new Vue({
 el: '#demo',
 //定义两组数据分别传递到两个组件的li中,两个列表的操作互不影响
 data: {
 data1: ['CSS', 'HTML', 'JavaScript'],
 data2: ['Vue.js', 'Node.js', 'Sass'],
 }
})
</script>

CSS样式

ul, li {
 margin: 0;
 padding: 0;
 list-style: none;
}
#selectWrap {
 width: 250px;
 padding: 2rem;
 background: #4682b4;
}
.searchBox input, .searchBox a {
 line-height: 1.5rem;
 height: 1.5rem;
 margin-bottom: 1rem;
 padding: 0 5px;
 vertical-align: middle;
 border: 1px solid #aaa;
 border-radius: 5px;
 outline: none;
}
.searchBox a {
 display: inline-block;
 text-decoration: none;
 background-color: #b1d85c;
}
.skill li {
 font-size: 18px;
 line-height: 2rem;
 height: 2rem;
 padding-left: 5px;
 cursor: pointer;
}
.skill li:hover {
 background-color: #008b45;
}

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

使用javascript的模块加载器

v-for怎么加载本地静态图片

热心网友 时间:2022-04-20 01:27

下拉菜单是select option吧

代码如下:

HTML

<body onload="load()">
<form id="f" name="f">
<select id="year" name="year"></select>
<select id="month" name="month"></select>
<select id="day" name="day"></select>
</form>
</body>

JS

function initDate(startYear, year, month, day) {
var monHead=[31,28,31,30,31,30,31,31,30,31,30,31];
var nowYear = new Date().getFullYear();
var nowMonth=new Date().getMonth()+1;
var nowDay=new Date().getDate();

for(var i=startYear;i<nowYear+1;i++){
year.options.add(new Option(i,i));
}

for(var j=1;j<13;j++){
month.options.add(new Option(j,j));
}
//为下拉框赋值
year.value=nowYear;
month.value=nowMonth;

var monthDays=monHead[nowMonth-1];
if(nowMonth==2 && isLeapYear(year.options[year.selectedIndex].value)){
//闰年2月29天
monthDays = monthDays + 1;
}
for(var k=1;k<monthDays+1;k++){
day.options.add(new Option(k,k));
}
day.value=nowDay;
}

//判断是否是闰年
function isLeapYear(year){
return (0==year%4&&(year%100!=0||year%400==0));
}

function load() {
initDate(1970, f.year, f.month, f.day);
}

初始化成当前日期了的,初始年份设置成了1970年

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
填地方专项志愿会影响本科二批录取吗? 地方专项计划成绩不好的可以报吗 国家专项地方专项影响本科填报吗 地方专项计划滑档影响本科录取吗 报地方专项计划会影响高考录取吗 地方专项计划影响后续录取吗 电脑最高配组装机配置组装电脑什么配置比较好 台式组装游戏电脑配置组装电脑什么配置比较好 打游戏主机电脑配置台式电脑主要是玩游戏什么配置最合适 组装高配置台式电脑组装电脑什么配置比较好 中国餐桌礼仪英语作文(初二的) 我要在淘宝网上开个礼品店 请大家帮忙取个有创意的名字 闲聊里的钱提现 钱没到账 提示一到三个工作日 如不到账会自动退回 可现在都5天了钱还到账 也没退回? 为什么过流保护只能作为主变后备保护 主变压器后备保护和主变压器保护有什么区别,它们是同一种保护吗? 220kv主变保护中是高压侧开关失灵复压闭锁是如何实现的 主变高后备保护 高压侧复压动作?求解释什么意思 为什么要用复合电压起动的过电流保护 负压过流保护的工作原理 主变复压过流一,二,三段动作过程中,需经三侧复合电压闭锁是什么意思 &lt;ul&gt;标签两层嵌套如何在js中找到第二层&lt;li&gt;标签,不用获取id的方法。两层&lt;li&gt;标签的class是一样的。 什么是变压器的复压保护? 梦见身上长了很多牙齿弄都弄不掉 给别人说说点赞图案恢复默认? 女人例假要到几岁才绝。 网站权重从1到2需要多久? 百度的权重与谷歌的PR有什么不同呢 为什么百度权重一直是0 少儿遗尿症是什么原因造成的? 毛线鞋面如何织 淘宝店取个名字 礼物淘宝店叫什么名字好 淘宝网店短域名是【keng】,主要经营方向的是创意礼品类宝贝,请问起一个什么样的名字好。 关于法律职业考试资格的问题? 小米手机底部出现四个导航键 为什么厕所里会生鼠妇和蟑螂 适合成片种植的花卉有哪些 适合大面积种植的花卉有哪些种类 请问什么花卉可以大面积种植,且能获得较好的观赏效果,经济效益又好?除了郁金香,油菜花、薰衣草等! 什么菊花适合大面积种植?有没有好的种植经验? 适合种植在花圃作观赏的植物有哪些 云南省的人口有多少,居全国第几位? 什么软件可以与CAD兼容并可以自动排版 请问哪里可以下载到免费的CAD软件(最好是企业普遍使用的版式) Impactcad软件 我的cad图里想自动的计算出石材的出材率有没有这样一种软件啊 听说那个软件本来是计算么才的 和鹰CAD排版软件能替换裁片刷新吗 《安妮日记》为什么是禁书? 《安妮日记》主要内容是什么? 安妮日记讲的是什么道理