首页 > 编程语言 >原生JavaScript写个表格版的日历

原生JavaScript写个表格版的日历

时间:2024-03-25 13:31:58浏览次数:22  
标签:function 写个 JavaScript var ._ date nullTd options 日历

如图:

简单、易懂、写着玩儿的……

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
</head>

<body>
<div id="myDate"></div>
<script>
(function(id, options){
	this._date = new Date()
	this.dateObj = {
		_year: this._date.getFullYear(),
		_month: this._date.getMonth() + 1,
		_date: this._date.getDate(),
		_hour: this._date.getHours(),
		_minutes: this._date.getMinutes(),
		_seconds: this._date.getSeconds(),
	}
	this.config = {
		width: 			options.width ? options.width : 320,
		height: 		options.height ? options.height : 240,
		sundayColor: 	options.sundayColor ? options.sundayColor : '#F7A597',
		SaterdayColor: 	options.SaterdayColor ? options.SaterdayColor : '#D0F7CC',
		curColor: 		options.curColor ? options.curColor : '#f00',
	}
	// 本月多少天
	this.calcMonthDays = function(){
		return new Date(this.dateObj._year, this.dateObj._month, 0).getDate()
	}
	// 1号星期几
	this.calcDay1Week = function(){
		return new Date(this.dateObj._year + '-' + this.dateObj._month + '-' + 1).getDay()
	}
	// 生成日历表头, 周日到周六
	this.createTableTitle = function(){
		var week = ['日', '一', '二', '三', '四', '五', '六'], nullTd = [], i
		for(i=0; i<week.length; i++){
			nullTd.push('<th>' + week[i] + '</th>')
		}
		return nullTd
	}
	// 生成空表格
	this.createNullTd = function(){
		var nullTd = this.createTableTitle(), i
		for(i=0; i<this.calcDay1Week(); i++){
			nullTd.push('<td></td>')
		}
		return nullTd
	}
	// 生成日期表体, 1号到月底
	this.createTableBodyTr = function(){
		var nullTd = this.createNullTd(), totalDays = this.calcMonthDays() + this.calcDay1Week(), i
		for(i=1; i<=this.calcMonthDays(); i++){
			if (this.dateObj._date == i){
				nullTd.push('<td style="color:' + this.config.curColor + '">' + i + '</td>')
			}else{
				nullTd.push('<td>' + i + '</td>')
			}
		}
		console.log(totalDays)
		if (totalDays% 7 != 0){
			for(var i=0; i<(7 - totalDays % 7); i++){
				nullTd.push('<td></td>')
			}
		}
		return nullTd
	}
	// 渲染表格
	this.render = function(id){
		var myDate = document.getElementById(id), 
			nullTd = this.createTableBodyTr()
		var table, tableBegin = '<table style="width:' + this.config.width + 'px;height:' + this.config.height +'px;text-align:center">', tableEnd = '</table>', tr = '<tr>'
			for(var i=0; i<nullTd.length; i++){
				if (i%7 == 0 && i>1){
					tr += '</tr><tr>'
				}
				tr += nullTd[i]
			}
			tr += '</tr>'
			table = tableBegin + tr + tableEnd
			myDate.innerHTML = table
	}
	this.render(id)
	console.log(options)
})('myDate', {width:320, height:240})
</script>
</body>
</html>

非常简单,也易于修改,有兴趣的可以加上上一个月,下一个月等等

标签:function,写个,JavaScript,var,._,date,nullTd,options,日历
From: https://blog.csdn.net/zzjnlwb/article/details/136918024

相关文章

  • JavaScript初识及基本语法详解
    JavaScript是一种高级的脚本语言,它在Web开发中扮演着至关重要的角色,主要用于增强用户与HTML页面的交互过程。以下是JavaScript的一些基本概念和语法要点:简介:JavaScript是三大Web技术之一(HTML、CSS和JavaScript),它能使网页从静态变为动态互动,广泛应用于Web应用开发。控制HTML:Jav......
  • 为什么使用类型化数组来进行字节操作而不是普通的 javascript 数字数组
    1.javascript中的数字数据类型默认为64位(8字节),无论任何数字。这意味着可以在不损失精度的情况下表示-2⁵³+1到2⁵³–1范围内的数字。这意味着即使我们想存储10个,也会消耗8个字节的内存,而这是根本不需要的。当内存效率是一个问题时,特别是在处理大型整数数组或二进制数......
  • node.js学习,学习到模块化了,写个博客先
    模块化:编程领域的模块化,就是遵守固定的规则,把一个大文件拆解成独立并互相依赖的小模块模块化规范就是对代码进行模块化的拆分与组合时,所需要遵守的规则。这样有利于降低沟通的成本,也有利于实现我们现在所流行的组件化具体使用方法:其实很简单,用require()方法就好,模块加载分为三种......
  • 一文让你读懂JavaScript原型对象与原型链的继承
    前言有些新手朋友可能听说过这么一句话,就是js中存在两个链条,它们分别为:作用域链和原型链它们彼此的区别在于作用域链是为了访问变量和数据而存在的一种链条访问机制而原型链是访问对象的属性或者方法而存在的一种机制!其中这里的原型链就是今天我要说的主题!我们学习js必须......
  • JavaScript:void(0) 用法及常见问题解析
    JavaScript:void(0)用法及常见问题解析javascript:void(0);是一种在JavaScript和网页开发中经常使用的技术,尤其在处理链接的行为时。本文将深入探讨javascript:void(0);的用法,以及在使用过程中可能遇到的常见问题和解决方法。什么是javascript:void(0);?javascript:v......
  • javascript解析unicode字符,替换成正常字符
    开始使用正则表达式来匹配unicode字符以及html的特殊字符,比如空格,引号等。后面发现可以直接使用DOMParser进行转换,更加方便。需要先创建一个DOMParser对象,然后通过domParser对象使用parseFromString来进行解析,这样会把字符串中的Unicode和html特殊字符转换成正常显示的字符了。......
  • 任何样式,javascript都可以操作,让你所向披靡
    前言习惯了在css文件里面编写样式,其实JavaScript的CSS对象模型也提供了强大的样式操作能力,那就随文章一起看看,有多少能力是你不知道的吧。样式来源客从八方来,样式呢,样式五方来。chrome旧版本用户自定义样式目录:%LocalAppData%/Google/Chrome/UserData/Default/User......
  • JavaScript 排序算法
    在这篇文章中,我将介绍几种常见的JavaScript排序算法,并对它们的原理和实现进行详细说明。排序算法是计算机科学中非常重要的基础知识之一,它们可以帮助我们对数据进行有效的整理和排序,提高程序的效率和性能。冒泡排序(BubbleSort)冒泡排序是最简单的排序算法之一,它通过不......
  • Javascript中的严格模式 “use strict“
    一、为什么使用严格模式?在普通的JavaScript中,写错变量名会创建新的全局变量,在严格模式中,写错变量名会抛出错误来提醒开发者二、声明严格模式通过在脚本或函数的开头添加“usestrict”;来声明严格模式。"usestrict"指令只能在脚本或函数的开头被识别在脚本开头进......
  • 08-JavaScript事件监听
     <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>JS-事件-事件绑定</title></head><body><!--点击按钮,在控制台打印相关信息--><inputtype="button"......