天天看點

 VUE 簡單的操作dom對象

最近閑的無聊,想在VUE中用dom對象操作一個時間的選擇預約,可供自己和大家參考學習,廢話不多說!可以複制下方的代碼:在菜鳥教程上測試檢視效果:https://www.runoob.com/try/try.php?filename=vue3-hw

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Vue 測試執行個體 - 菜鳥教程(YOLE)</title>
	<script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
</head>
<body>
	<div id="vue_det">
		<h1 class="addDbSource-alert" ref="addAlert1">site : {{site}}</h1>
		<h1 @click="showAddAlert">{{btn}}</h1>
		<div v-for="(h,index1) in hour" style="width: 1200rpx;">
			<div v-for="(m,index2) in minute" class="time_box" ref="{{h}}_{{m}}">
				{{h}}:{{m}}
			</div>
		</div>
	</div>
	<script type="text/javascript">
		var vm = new Vue({
			el: '#vue_det',
			data: {
				site: "我會被改變顔色和背景色",
				btn: "點我觸發事件",
				hour: ["00", "01"],//小時
       			minute: ["00", "15", "30", "45"],//分鐘
				letters:["a","b"],//辨別
				datas:{a00_00:true,a00_15:false,a00_30:false,a00_45:true,
				b01_00:true,b01_15:false,b01_30:false,b01_45:true}//改時間的判斷值
			},
			methods: {
				showAddAlert(){
					//改變字型顔色
					this.$refs.addAlert1.style.color = "#FFF";  
					//改變背景顔色
					this.$refs.addAlert1.style.backgroundColor = "#F00";
					//綁定單擊事件
					this.$refs.addAlert1.addEventListener('click',function(){
						alert("hello wrold");
					},false)
					
					//擷取所有元素
					var array_list=this.$refs;
					//console.log(array_list);
					//循環元素
					for(var key in array_list){
						//找到我們需要的元素
						if(key=="{{h}}_{{m}}"){
							var a =array_list[key];//存儲臨時變量
							//console.log(a);
							var num_= 0;//定義一個存儲循環 letters 的下标變量;
							for(var i=0;i<a.length;i++){//循環我們需要的元素
								var name=a[i].innerText.replace(':','_');//特殊處理,友善我們識别datas内的資料
								//console.log(num_)
								
								//以下是動态綁定
								console.log(this.letters[num_],name);
								var lettersName=(this.letters[num_] + name);//得到 如: a00_00 的資料
								console.log(this.datas[lettersName]);//取到datas中的資料
								if(!this.datas[lettersName]){//判斷true | false 分别處理
									a[i].style.color = "#FFF";//字型顔色改成白色
									a[i].style.backgroundColor = "#F00";//背景色改成紅色
									a[i].addEventListener('click',function(){//綁定單擊事件
										alert("不可以預約");
									},false)
								}else{
									a[i].addEventListener('click',function(){
										alert("可以預約的啦!");
									},false)
								}
								
								if((i+1)%this.minute.length==0){//每4次num_累計+1
									num_++;
								}
							}
							break;//結束,跳出循環
						}
					}
				}
			}
		})
	</script>
</body>
	<style>
.time_box {
    width: 50px;
    height: 50px;
    margin: 10px auto;
    border: 1px solid #00F;
    text-align: center;
    line-height: 46px;
}
	</style>
</html>
           

繼續閱讀