生成日历中任意一个月的日期数组,并按星期排列
使用 JavaScript 的 Date 对象和一些日期处理方法。
以下是一个示例代码,演示如何生成指定月份的日期数组,并按星期排列:
// 计算函数
function generateCalendar(year, month) {
var startDate=new Date(year, month - 1, 1); // 设置为指定年份和月份的第一天
var endDate=new Date(year, month, 0); // 设置为指定年份和月份的最后一天
var dates=[];
var currentDate=startDate;
// 添加空白日期,以使第一天对应正确的星期
for (var i=0; i < startDate.getDay(); i++) {
dates.push(null);
}
while (currentDate <=endDate) {
dates.push(currentDate.getDate());
currentDate.setDate(currentDate.getDate() + 1);
}
// 添加空白日期,以使最后一天对应正确的星期
for (var i=endDate.getDay(); i < 6; i++) {
dates.push(null);
}
// 将日期数组按星期排列
var weeks=[];
var week=[];
dates.forEach(function(date) {
week.push(date);
if (week.length===7) {
weeks.push(week);
week=[];
}
});
return weeks;
}
// 用法使用示例
var year=2023;
var month=8;
var weeksArray=generateCalendar(year, month);
console.log(weeksArray);
在这个示例中,我们首先定义了一个名为 generateCalendar 的函数,它接受年份和月份作为参数。我们使用 new Date(year, month - 1, 1) 来创建一个表示指定年份和月份第一天的 Date 对象,并使用 new Date(year, month, 0) 来创建一个表示指定年份和月份最后一天的 Date 对象。
然后,我们使用一个循环来添加空白日期,以使第一天对应正确的星期。我们使用 startDate.getDay() 来获取第一天的星期几,并使用一个循环将 null 值添加到日期数组中。
接下来,我们使用另一个循环来遍历从第一天到最后一天的日期,并将每个日期的日期部分添加到日期数组中。
然后,我们再次使用一个循环来添加空白日期,以使最后一天对应正确的星期。我们使用 endDate.getDay() 来获取最后一天的星期几,并使用一个循环将 null 值添加到日期数组中。
最后,我们将日期数组按星期排列。我们创建一个空数组 weeks 和一个临时数组 week,然后使用 forEach 方法遍历日期数组。我们将每个日期添加到 week 数组中,并在 week 数组长度达到 7 时,将其添加到 weeks 数组中,并重置 week 数组。
最终,我们返回按星期排列的日期数组,并在示例用法中打印出来。
注意:这里的星期是按照周日开始的
odejs支持js代码跑在后端服务器上。
版本主要用的还是5.1和6.0版本。
有两种引入方式:
1.script标签内部直接书写js代码
2.script标签src属性引入外部js代码
//单行注释
/*多行注释*/
js语句以;作为语句的结束,但不写也没关系。
js中首次定义一个变量名的时候,需要用关键字声明
1、关键字var
var name='jason'
2、es6推出的新语法let
let name='jason'
如果你的编辑器支持的版本是5.1,那么无法使用let
const 用来定义常量
var与let的区别:
1、作用域:使用"var"声明的变量在整个函数范围内都是可访问的(函数作用域),而使用"let"声明的变量则是块级作用域的(块级作用域是指由一对花括号包围的代码块)。
2、变量提升:使用"var"声明的变量会发生变量提升,意味着变量可以在其声明之前被访问。而使用"let"声明的变量不会发生变量提升,只有在变量声明的位置之后才能访问到。
3、重复声明:使用"var"重复声明同一个变量是允许的,而使用"let"重复声明同一个变量则会引发错误。
4、循环中的区别:在使用"var"声明的变量在循环中具有全局作用域,而使用"let"声明的变量在循环中具有块级作用域。这意味着使用"let"声明的变量在每次循环迭代时都会重新创建,避免了一些常见的循环中的问题。
总结起来,"var"适用于函数作用域的变量声明,而"let"适用于块级作用域的变量声明。在现代的JavaScript开发中,推荐使用"let"来声明变量,因为它提供了更好的作用域控制和更明确的变量声明方式。
var
let
1.变量名只能是:数字、字母、下户线和$
2.变量名命名规范:js中推荐使用驼峰式命名。如:userName
3.不能用关键字命名
1.可以单独开设js文件书写
2.可以在浏览器的console界面书写,在浏览器书写js的时候,左上方的清空按钮只是清空内容,代码其实还在。如果想重新来,最好重新开设一个页面(在使用浏览器写js代码的话最好是在自己的html界面书写)
JavaScript是一种动态类型语言。动态类型语言是指在运行时确定变量类型的语言。相对于静态类型语言(如Java、C++),在JavaScript中,变量的类型是在运行时根据赋值的值来确定的,而不是在编译时确定的。
数值类型(number):
var a=11
var b=11.11
typeof a //查看数据类型
js中浮点数和整数都是number类型
特殊的数值类型:NaN也是一种number,但他表示的意思是“不是一个数值”not a number。
parseInt('') //转为整形
parseFloat('') //转为浮点数
当浮点数转为整形时,会自动去除后面的小数点。
字符类型(string):
var name='name' //字符串
var str=` //模板字符串
asdasd
asdasd
`
// 模版字符串除了可以定义多行文本之外还可以实现格式化字符串操作
// 书写${}会自动去前面找大括号里面的变量名对应的值,如果没有定义直接报错
var sss=`my name is ${name}` //类似于python里的占位符
// 字符串的拼接
// 在python中不推荐你使用+做拼接 join// 在js中推荐你直接使用+做拼接
name + age
字符串的内置方法:
1.在python中布尔值是首字母大写的
True
False
2.但是在js中布尔值是全小写的
true
false
# 布尔值是false的有哪些
空字符串、0、null、undefined、NaN
nul1
表示值为空一般都是指定或者清空一个变量时使用
name=‘jason’
name=null
undefined
表示声明了一个变量,但是没有做初始化操作(没有给值)。
函数没有指定返回值的时候,返回的也是undefined
在js中数组用[]表示。(和python里的列表一样,但不支持负数索引。)
内置方法:
基本函数
forEach函数
splice函数
map函数,效果和forEach差不多
自定义对象:
在js中自定义对象用{}表示,类似于python中的字典。
第二种创建自定义对象的方式
用于创建时间对象
json对象
re对象
全局匹配需要注意的地方(1)
在第一次全局匹配后,指针会落到字符串的末尾处。然后下一次匹配开始时,会直接从末尾处开始匹配,匹配不到内容,则会输出false,然后再将指针移动到开头。
lastindex属性验证
全局匹配需要注意的地方(2)
如果被匹配的对象里面什么也没有,那么会自动传一个undefined。
自增
比较运算符(大于等于也是一样操作的)
逻辑运算符
if判断
switch语法
switch语法
for循环
while循环、三元运算符
有参函数,参数传多了或传少了都不会报错
可以使用arguments关键字来控制传参
函数的返回值
匿名函数
箭头函数
作用域(查找变量的优先级顺序)
作用域(查找变量的优先级顺序)
头条创作挑战赛# HTMLDocument对象是Microsoft Excel VBA中表示HTML文档的一种对象。它可以用于读取、修改和操作HTML文档中的标签、元素和属性。可以通过创建HTMLDocument对象来加载和解析HTML文件,并使用提供的方法和属性访问文档中的各个部分。可以将HTMLDocument对象与其他Excel对象(如Workbooks、Worksheets或Range)一起使用,以便在VBA中自动化对HTML文档的处理和操作。
1、创建HTMLDocument对象并加载HTML文件:
Dim htmlDoc As New HTMLDocument
htmlDoc.body.innerHTML="HTML内容"
2、通过标签名称获取元素对象:
Dim element As Object
Set element=htmlDoc.getElementsByTagName("h1")(0)
3、获取元素的文本内容:
Dim text As String
text=htmlDoc.getElementById("myElement").innerText
4、修改元素的属性值:
htmlDoc.getElementById("myElement").setAttribute "class", "newClass"
5、遍历所有元素并执行操作:
Dim allElements As Object
Set allElements=htmlDoc.getElementsByTagName("*")
For Each element In allElements
' 执行操作
Next element
6、在HTML文档中插入新元素:
Dim newElement As Object
Set newElement=htmlDoc.createElement("p")
newElement.innerHTML="新段落"
htmlDoc.body.appendChild newElement
以下是两个在Excel VBA中使用HTMLDocument对象的示例:
案例一:从网页中提取数据并填充至Excel工作表
Sub ExtractDataFromWeb()
Dim html As New HTMLDocument ' 创建HTMLDocument对象
Dim xmlhttp As Object
Dim table As Object
Dim i As Integer, j As Integer
' 创建XMLHTTP对象
Set xmlhttp=CreateObject("MSXML2.XMLHTTP")
' 发送GET请求获取网页内容
xmlhttp.Open "GET", "http://www.example.com", False
xmlhttp.send
' 将获取的网页内容解析到HTMLDocument对象
html.body.innerHTML=xmlhttp.responseText
' 在HTMLDocument对象中查找需要提取的表格
Set table=html.getElementById("tableId")
' 填充数据至Excel工作表
For i=0 To table.Rows.Length - 1
For j=0 To table.Rows(i).Cells.Length - 1
ThisWorkbook.Sheets("Sheet1").Cells(i + 1, j + 1)=table.Rows(i).Cells(j).innerText
Next j
Next i
Set xmlhttp=Nothing
Set html=Nothing
End Sub
案例二:自动化提交表单并获取返回结果
Sub SubmitFormAndGetResponse()
Dim html As New HTMLDocument ' 创建HTMLDocument对象
Dim xmlhttp As Object
Dim form As Object
Dim submitButton As Object
' 创建XMLHTTP对象
Set xmlhttp=CreateObject("MSXML2.XMLHTTP")
' 发送GET请求获取包含表单的网页内容
xmlhttp.Open "GET", "http://www.example.com/form-page", False
xmlhttp.send
' 将获取的网页内容解析到HTMLDocument对象
html.body.innerHTML=xmlhttp.responseText
' 在HTMLDocument对象中查找表单并填写表单字段
Set form=html.forms(0)
form.getElementById("inputField1").Value="Value1"
form.getElementById("inputField2").Value="Value2"
' 找到提交按钮并自动点击
Set submitButton=form.getElementsByClassName("submitButton")(0)
submitButton.Click
' 等待结果返回并解析结果
Application.Wait Now + TimeValue("0:00:02") ' 等待2秒,根据实际情况调整等待时间
html.body.innerHTML=xmlhttp.responseText
' 处理返回结果
' ...
Set xmlhttp=Nothing
Set html=Nothing
End Sub
这些示例演示了如何使用HTMLDocument对象从网页中提取数据并将其填充至Excel工作表,以及如何自动化提交HTML表单并获取返回结果。可以根据需要修改代码中的URL、元素ID和类名等,以适应具体的网页结构和目标数据。
使用HTMLDocument对象时需要注意以下事项:
1、引用Microsoft HTML Object Library:在VBA编辑器中,点击菜单栏上的"工具",选择"引用",然后勾选"Microsoft HTML Object Library"。这个引用将允许你在VBA代码中使用HTMLDocument对象。
2、创建HTMLDocument对象:使用CreateObject函数创建HTMLDocument对象。例如:
Dim html As Object
Set html=CreateObject("HTMLFile")
3、加载HTML内容:使用HTMLDocument对象的Open方法加载HTML内容。例如:
html.Open
html.Write "<html><body><h1>Hello, World!</h1></body></html>"
html.Close
4、获取HTML元素:可以使用getElementById、getElementsByTagName、getElementsByClassName等方法获取HTML元素。例如:
Dim h1 As Object
Set h1=html.getElementById("myHeading")
5、操作HTML元素:可以使用HTML元素的属性和方法进行操作。例如,改变元素的文本内容:
h1.innerText="Hello, VBA!"
6、事件处理:HTMLDocument对象也支持事件处理。可以使用AttachEvent方法将事件与处理程序关联起来。例如:
Dim button As Object
Set button=html.getElementById("myButton")
Private Function Button_Click()
MsgBox "Button clicked!"
End Function
button.AttachEvent "onclick", Button_Click
7、释放资源:在使用完HTMLDocument对象后,记得使用Set语句将其设置为Nothing,以释放系统资源。例如:
Set h1=Nothing
Set html=Nothing
以上是使用HTMLDocument对象时需要注意的一些事项。通过合适的引用和正确的操作,可以在VBA编写中使用HTMLDocument对象来处理HTML内容。
*请认真填写需求信息,我们会在24小时内与您取得联系。