整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          JavaScript 生成日歷中任意一個(gè)月的日期數(shù)組

          JavaScript 生成日歷中任意一個(gè)月的日期數(shù)組

          生成日歷中任意一個(gè)月的日期數(shù)組,并按星期排列

          使用 JavaScript 的 Date 對象和一些日期處理方法。

          以下是一個(gè)示例代碼,演示如何生成指定月份的日期數(shù)組,并按星期排列:

          // 計(jì)算函數(shù)
          function generateCalendar(year, month) {
            var startDate=new Date(year, month - 1, 1); // 設(shè)置為指定年份和月份的第一天
            var endDate=new Date(year, month, 0); // 設(shè)置為指定年份和月份的最后一天
          
            var dates=[];
            var currentDate=startDate;
          
            // 添加空白日期,以使第一天對應(yīng)正確的星期
            for (var i=0; i < startDate.getDay(); i++) {
              dates.push(null);
            }
          
            while (currentDate <=endDate) {
              dates.push(currentDate.getDate());
              currentDate.setDate(currentDate.getDate() + 1);
            }
          
            // 添加空白日期,以使最后一天對應(yīng)正確的星期
            for (var i=endDate.getDay(); i < 6; i++) {
              dates.push(null);
            }
          
            // 將日期數(shù)組按星期排列
            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);
          

          在這個(gè)示例中,我們首先定義了一個(gè)名為 generateCalendar 的函數(shù),它接受年份和月份作為參數(shù)。我們使用 new Date(year, month - 1, 1) 來創(chuàng)建一個(gè)表示指定年份和月份第一天的 Date 對象,并使用 new Date(year, month, 0) 來創(chuàng)建一個(gè)表示指定年份和月份最后一天的 Date 對象。

          然后,我們使用一個(gè)循環(huán)來添加空白日期,以使第一天對應(yīng)正確的星期。我們使用 startDate.getDay() 來獲取第一天的星期幾,并使用一個(gè)循環(huán)將 null 值添加到日期數(shù)組中。

          接下來,我們使用另一個(gè)循環(huán)來遍歷從第一天到最后一天的日期,并將每個(gè)日期的日期部分添加到日期數(shù)組中。

          然后,我們再次使用一個(gè)循環(huán)來添加空白日期,以使最后一天對應(yīng)正確的星期。我們使用 endDate.getDay() 來獲取最后一天的星期幾,并使用一個(gè)循環(huán)將 null 值添加到日期數(shù)組中。

          最后,我們將日期數(shù)組按星期排列。我們創(chuàng)建一個(gè)空數(shù)組 weeks 和一個(gè)臨時(shí)數(shù)組 week,然后使用 forEach 方法遍歷日期數(shù)組。我們將每個(gè)日期添加到 week 數(shù)組中,并在 week 數(shù)組長度達(dá)到 7 時(shí),將其添加到 weeks 數(shù)組中,并重置 week 數(shù)組。

          最終,我們返回按星期排列的日期數(shù)組,并在示例用法中打印出來。

          注意:這里的星期是按照周日開始的

          odejs支持js代碼跑在后端服務(wù)器上。

          版本主要用的還是5.1和6.0版本。

          有兩種引入方式:

          1.script標(biāo)簽內(nèi)部直接書寫js代碼

          2.script標(biāo)簽src屬性引入外部js代碼

          JavaScript的語法結(jié)構(gòu)

          //單行注釋
          /*多行注釋*/

          js語句以;作為語句的結(jié)束,但不寫也沒關(guān)系。

          js的變量與常量

          js中首次定義一個(gè)變量名的時(shí)候,需要用關(guān)鍵字聲明
          1、關(guān)鍵字var
          var name='jason'
          2、es6推出的新語法let
          let name='jason'
          如果你的編輯器支持的版本是5.1,那么無法使用let
          const 用來定義常量

          var與let的區(qū)別:

          1、作用域:使用"var"聲明的變量在整個(gè)函數(shù)范圍內(nèi)都是可訪問的(函數(shù)作用域),而使用"let"聲明的變量則是塊級作用域的(塊級作用域是指由一對花括號包圍的代碼塊)。

          2、變量提升:使用"var"聲明的變量會發(fā)生變量提升,意味著變量可以在其聲明之前被訪問。而使用"let"聲明的變量不會發(fā)生變量提升,只有在變量聲明的位置之后才能訪問到。

          3、重復(fù)聲明:使用"var"重復(fù)聲明同一個(gè)變量是允許的,而使用"let"重復(fù)聲明同一個(gè)變量則會引發(fā)錯(cuò)誤。

          4、循環(huán)中的區(qū)別:在使用"var"聲明的變量在循環(huán)中具有全局作用域,而使用"let"聲明的變量在循環(huán)中具有塊級作用域。這意味著使用"let"聲明的變量在每次循環(huán)迭代時(shí)都會重新創(chuàng)建,避免了一些常見的循環(huán)中的問題。

          總結(jié)起來,"var"適用于函數(shù)作用域的變量聲明,而"let"適用于塊級作用域的變量聲明。在現(xiàn)代的JavaScript開發(fā)中,推薦使用"let"來聲明變量,因?yàn)樗峁┝烁玫淖饔糜蚩刂坪透鞔_的變量聲明方式。

          var

          let

          變量的命名規(guī)范:

          1.變量名只能是:數(shù)字、字母、下戶線和$

          2.變量名命名規(guī)范:js中推薦使用駝峰式命名。如:userName

          3.不能用關(guān)鍵字命名

          js代碼的書寫位置

          1.可以單獨(dú)開設(shè)js文件書寫

          2.可以在瀏覽器的console界面書寫,在瀏覽器書寫js的時(shí)候,左上方的清空按鈕只是清空內(nèi)容,代碼其實(shí)還在。如果想重新來,最好重新開設(shè)一個(gè)頁面(在使用瀏覽器寫js代碼的話最好是在自己的html界面書寫)

          js的數(shù)據(jù)類型:

          JavaScript是一種動態(tài)類型語言。動態(tài)類型語言是指在運(yùn)行時(shí)確定變量類型的語言。相對于靜態(tài)類型語言(如Java、C++),在JavaScript中,變量的類型是在運(yùn)行時(shí)根據(jù)賦值的值來確定的,而不是在編譯時(shí)確定的。

          數(shù)值類型(number):

          var a=11
          var b=11.11
          typeof a //查看數(shù)據(jù)類型
          js中浮點(diǎn)數(shù)和整數(shù)都是number類型
          特殊的數(shù)值類型:NaN也是一種number,但他表示的意思是“不是一個(gè)數(shù)值”not a number。
          parseInt('') //轉(zhuǎn)為整形
          parseFloat('') //轉(zhuǎn)為浮點(diǎn)數(shù)
          當(dāng)浮點(diǎn)數(shù)轉(zhuǎn)為整形時(shí),會自動去除后面的小數(shù)點(diǎn)。

          字符類型(string):

          var name='name' 	//字符串
          var str=`	//模板字符串
          asdasd
          asdasd
          `
          // 模版字符串除了可以定義多行文本之外還可以實(shí)現(xiàn)格式化字符串操作
          // 書寫${}會自動去前面找大括號里面的變量名對應(yīng)的值,如果沒有定義直接報(bào)錯(cuò)
          var sss=`my name is ${name}`	//類似于python里的占位符
          // 字符串的拼接
          // 在python中不推薦你使用+做拼接 join// 在js中推薦你直接使用+做拼接
          name + age
          

          字符串的內(nèi)置方法:

          布爾值(boolean)

          1.在python中布爾值是首字母大寫的

          True

          False

          2.但是在js中布爾值是全小寫的

          true

          false

          # 布爾值是false的有哪些

          空字符串、0、null、undefined、NaN

          null與undefined

          nul1

          表示值為空一般都是指定或者清空一個(gè)變量時(shí)使用

          name=‘jason’

          name=null

          undefined

          表示聲明了一個(gè)變量,但是沒有做初始化操作(沒有給值)。

          函數(shù)沒有指定返回值的時(shí)候,返回的也是undefined

          對象(object):

          數(shù)組

          在js中數(shù)組用[]表示。(和python里的列表一樣,但不支持負(fù)數(shù)索引。)

          內(nèi)置方法:

          基本函數(shù)

          forEach函數(shù)

          splice函數(shù)

          map函數(shù),效果和forEach差不多

          自定義對象:

          在js中自定義對象用{}表示,類似于python中的字典。

          第二種創(chuàng)建自定義對象的方式

          date對象

          用于創(chuàng)建時(shí)間對象

          json對象

          json對象

          RegExp正則

          re對象

          全局匹配需要注意的地方(1)

          在第一次全局匹配后,指針會落到字符串的末尾處。然后下一次匹配開始時(shí),會直接從末尾處開始匹配,匹配不到內(nèi)容,則會輸出false,然后再將指針移動到開頭。

          lastindex屬性驗(yàn)證

          全局匹配需要注意的地方(2)

          如果被匹配的對象里面什么也沒有,那么會自動傳一個(gè)undefined。

          運(yùn)算符

          自增

          比較運(yùn)算符(大于等于也是一樣操作的)

          邏輯運(yùn)算符

          流程控制語句

          if判斷

          switch語法

          switch語法

          for循環(huán)

          while循環(huán)、三元運(yùn)算符

          函數(shù)

          有參函數(shù),參數(shù)傳多了或傳少了都不會報(bào)錯(cuò)

          可以使用arguments關(guān)鍵字來控制傳參

          函數(shù)的返回值

          匿名函數(shù)

          箭頭函數(shù)

          作用域(查找變量的優(yōu)先級順序)

          作用域(查找變量的優(yōu)先級順序)

          math對象(了解)

          頭條創(chuàng)作挑戰(zhàn)賽# HTMLDocument對象是Microsoft Excel VBA中表示HTML文檔的一種對象。它可以用于讀取、修改和操作HTML文檔中的標(biāo)簽、元素和屬性??梢酝ㄟ^創(chuàng)建HTMLDocument對象來加載和解析HTML文件,并使用提供的方法和屬性訪問文檔中的各個(gè)部分。可以將HTMLDocument對象與其他Excel對象(如Workbooks、Worksheets或Range)一起使用,以便在VBA中自動化對HTML文檔的處理和操作。

          1、創(chuàng)建HTMLDocument對象并加載HTML文件:

          Dim htmlDoc As New HTMLDocument
          htmlDoc.body.innerHTML="HTML內(nèi)容"

          2、通過標(biāo)簽名稱獲取元素對象:

          Dim element As Object
          Set element=htmlDoc.getElementsByTagName("h1")(0)

          3、獲取元素的文本內(nèi)容:

          Dim text As String
          text=htmlDoc.getElementById("myElement").innerText

          4、修改元素的屬性值:

          htmlDoc.getElementById("myElement").setAttribute "class", "newClass"

          5、遍歷所有元素并執(zhí)行操作:

          Dim allElements As Object
          Set allElements=htmlDoc.getElementsByTagName("*")
          For Each element In allElements
              ' 執(zhí)行操作
          Next element

          6、在HTML文檔中插入新元素:

          Dim newElement As Object
          Set newElement=htmlDoc.createElement("p")
          newElement.innerHTML="新段落"
          htmlDoc.body.appendChild newElement

          以下是兩個(gè)在Excel VBA中使用HTMLDocument對象的示例:

          案例一:從網(wǎng)頁中提取數(shù)據(jù)并填充至Excel工作表

          Sub ExtractDataFromWeb()
              Dim html As New HTMLDocument ' 創(chuàng)建HTMLDocument對象
              Dim xmlhttp As Object
              Dim table As Object
              Dim i As Integer, j As Integer
              
              ' 創(chuàng)建XMLHTTP對象
              Set xmlhttp=CreateObject("MSXML2.XMLHTTP")
              
              ' 發(fā)送GET請求獲取網(wǎng)頁內(nèi)容
              xmlhttp.Open "GET", "http://www.example.com", False
              xmlhttp.send
              
              ' 將獲取的網(wǎng)頁內(nèi)容解析到HTMLDocument對象
              html.body.innerHTML=xmlhttp.responseText
              
              ' 在HTMLDocument對象中查找需要提取的表格
              Set table=html.getElementById("tableId")
              
              ' 填充數(shù)據(jù)至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

          案例二:自動化提交表單并獲取返回結(jié)果

          Sub SubmitFormAndGetResponse()
              Dim html As New HTMLDocument ' 創(chuàng)建HTMLDocument對象
              Dim xmlhttp As Object
              Dim form As Object
              Dim submitButton As Object
              
              ' 創(chuàng)建XMLHTTP對象
              Set xmlhttp=CreateObject("MSXML2.XMLHTTP")
              
              ' 發(fā)送GET請求獲取包含表單的網(wǎng)頁內(nèi)容
              xmlhttp.Open "GET", "http://www.example.com/form-page", False
              xmlhttp.send
              
              ' 將獲取的網(wǎng)頁內(nèi)容解析到HTMLDocument對象
              html.body.innerHTML=xmlhttp.responseText
              
              ' 在HTMLDocument對象中查找表單并填寫表單字段
              Set form=html.forms(0)
              form.getElementById("inputField1").Value="Value1"
              form.getElementById("inputField2").Value="Value2"
              
              ' 找到提交按鈕并自動點(diǎn)擊
              Set submitButton=form.getElementsByClassName("submitButton")(0)
              submitButton.Click
              
              ' 等待結(jié)果返回并解析結(jié)果
              Application.Wait Now + TimeValue("0:00:02") ' 等待2秒,根據(jù)實(shí)際情況調(diào)整等待時(shí)間
              html.body.innerHTML=xmlhttp.responseText
              
              ' 處理返回結(jié)果
              ' ...
              
              Set xmlhttp=Nothing
              Set html=Nothing
          End Sub

          這些示例演示了如何使用HTMLDocument對象從網(wǎng)頁中提取數(shù)據(jù)并將其填充至Excel工作表,以及如何自動化提交HTML表單并獲取返回結(jié)果。可以根據(jù)需要修改代碼中的URL、元素ID和類名等,以適應(yīng)具體的網(wǎng)頁結(jié)構(gòu)和目標(biāo)數(shù)據(jù)。

          使用HTMLDocument對象時(shí)需要注意以下事項(xiàng):

          1、引用Microsoft HTML Object Library:在VBA編輯器中,點(diǎn)擊菜單欄上的"工具",選擇"引用",然后勾選"Microsoft HTML Object Library"。這個(gè)引用將允許你在VBA代碼中使用HTMLDocument對象。

          2、創(chuàng)建HTMLDocument對象:使用CreateObject函數(shù)創(chuàng)建HTMLDocument對象。例如:

          Dim html As Object
          Set html=CreateObject("HTMLFile")

          3、加載HTML內(nèi)容:使用HTMLDocument對象的Open方法加載HTML內(nèi)容。例如:

          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元素的屬性和方法進(jìn)行操作。例如,改變元素的文本內(nèi)容:

          h1.innerText="Hello, VBA!"

          6、事件處理:HTMLDocument對象也支持事件處理??梢允褂肁ttachEvent方法將事件與處理程序關(guān)聯(lián)起來。例如:

          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語句將其設(shè)置為Nothing,以釋放系統(tǒng)資源。例如:

          Set h1=Nothing
          Set html=Nothing

          以上是使用HTMLDocument對象時(shí)需要注意的一些事項(xiàng)。通過合適的引用和正確的操作,可以在VBA編寫中使用HTMLDocument對象來處理HTML內(nèi)容。


          主站蜘蛛池模板: 亚洲国产成人久久一区久久| 无码囯产精品一区二区免费| 无码一区二区三区免费视频| 91一区二区三区四区五区 | 午夜性色一区二区三区免费不卡视频 | 日韩熟女精品一区二区三区| 一区二区三区午夜| 无码少妇一区二区三区浪潮AV| 中文字幕在线无码一区| 国产另类TS人妖一区二区| 日韩中文字幕一区| 日韩一区二区三区视频久久| 免费无码一区二区三区蜜桃| 美女毛片一区二区三区四区| 日本精品啪啪一区二区三区| 少妇人妻偷人精品一区二区| 日本片免费观看一区二区| 无码人妻一区二区三区在线水卜樱 | 麻豆国产一区二区在线观看| 精品一区二区三区AV天堂| 天码av无码一区二区三区四区| 国产一区二区在线看| 日韩欧美一区二区三区免费观看| 国产精品无码不卡一区二区三区 | 国产一区二区在线观看麻豆| 久久99热狠狠色精品一区| 国产婷婷色一区二区三区深爱网| 精品一区二区在线观看| 国产精品综合一区二区三区| 日韩AV无码久久一区二区| 成人区人妻精品一区二区不卡视频| 日韩一区二区三区四区不卡| 中文字幕AV一区中文字幕天堂| 国产一区二区久久久| 国产精品高清一区二区三区| 无码精品人妻一区二区三区免费| 精品国产一区二区三区久久久狼| 国产无线乱码一区二三区| 国产在线观看一区二区三区| 亚洲AV网一区二区三区| 亚洲一区二区三区电影|