我需要糾正這段代碼,以便從選擇中檢索為某一月份選擇的日期。例如,當用戶選擇月份為十月,日期為星期二時,它將列出十月中星期二的日期。
這段代碼只適用于星期一。
完整的代碼在這里。Fiddle
function getAllInstancesOfDayInMonth(fordate, forday) {
fordate.setDate(1)。
var start = getStartDay(fordate, forday)
,month = fordate.getMonth()
,結果 = [start];
while (fordate.getMonth() == month) {
result.push(new Date(fordate. setDate(fordate.getDate() 7))。
}
return result.slice(0,-1) 。
function getStartDay(d, forday) {
return d.getDay() != forday
? ( d.setDate( d.getDate() 1 ), getStartDay( d, forday ) )
: new Date(d)。
}
}
(function () {
document.querySelector('#ddlMonths'/span>)
.addEventListener('change', getDays) 。
var result = document.querySelector('#result')。
result.innerHTML = '<h3>Selected day </h3> '。
result.innerHTML = getAllInstancesOfDayInMonth(
new Date([2015,1,1] 。 join('/')), 1。
).join('
')。
function getDays(e){
var year = this.getAttribute('data-year')
,month = this.options[this.selectedIndex].value]
,monthstr = this.options[this.selectedIndex].innerHTML。
result.innerHTML = '<h3>' monthstr ' year '</h3> '的所有星期一。
result.innerHTML = getAllInstancesOfDayInMonth(
new Date([year,month 1,1]. join('/')), 1.
).join('
')。
}
function getAllInstancesOfDayInMonth(fordate,forday) {
fordate.setDate(2)。
var start = getStartDay(fordate, forday)
,month = fordate.getMonth()
,結果 = [start];
while (fordate.getMonth() == month) {
result.push(new Date(fordate. setDate(fordate.getDate() 7))。
}
return result.slice(0,-1) 。
function getStartDay(d, forday) {
return d.getDay() != forday
? ( d.setDate( d.getDate() 1 ), getStartDay( d, forday ) )
: new Date(d)。
}
}
}())
uj5u.com熱心網友回復:
你的代碼中存在多個問題。讓我們一個一個來看看。
天的選擇元素中的值并不都是唯一的。修復方法如下:
<select id="ddlDay" class="form-controll" >
<option value="0"/span>> 周一</選項>
<option value="1"/span>> Tuesday</option>
<option value="2"/span>> Wednesday</option>
<option value="3"/span>> Thursday</option>
<option value="4"/span>> 星期五</選項>>
<option value="5"/span>> 星期六</選項>
<option value="6" > 周日</選項>
</select>
現在來看看javascript...
首先,你的getDays函式只在你改變月份選擇元素時被呼叫,而不是改變日子選擇元素。我們添加以下內容,這樣你的顯示也會在改變日期時更新:
document.querySelector('#ddlDay')
.addEventListener('change', getDays) 。
在getDays函式中,用戶選擇的日期從未被呼叫,所以這就是為什么顯示停留在星期一。我們可以用下面的方法來解決這個問題:
var year = document. querySelector("#ddlMonths"/span>).getAttribute('data-year')。
month = parseInt(document. querySelector("#ddlMonths").value) 1。
monthstr = document.querySelector("#ddlMonths option:checked").innerText。
day = parseInt(document. querySelector("#ddlDay").value) 1。
daystr = document.querySelector("#ddlDay option:checked").innerText。
這段代碼絕對可以使用一些簡化,但它只是作業。請注意,month和day變數也應該在被送入getAllInstancesOfDayInMonth函式之前被轉換為適當的ints。
最后,我們更新顯示并相應地運行上述函式:
result. innerHTML = '<h3> 所有' daystr '的' monthstr ' year '</h3>'。
result.innerHTML = getAllInstancesOfDayInMonth(
new Date([year,month,1]. join('/')), day % 7.
).join('
')。
我想這應該就是全部了。可以在這里找到作業的小工具。https://jsfiddle.net/m9nvekhd
uj5u.com熱心網友回復:
我認為你把一切都弄得非常復雜
。const
myForm = document.forms['my-form']
, dateYM = { 年: 'numeric', 月: 'long'}, dateLong = { 月: 'long'}
, dateLong = { weekday: 'long', 年份: 'numeric', 月: 'long', day: ' numeric' }
, setDays =_=>/span>
{
let dt = new Date(`${myForm. Months.dataset.year}-${myForm.Months.value}-1`)
, mRef = dt.getMonth()
;
myForm.result.innerHTML = `<h3>All ${myForm.Day. selectedOptions[0].textContent}in ${dt.toLocaleDateString('en-US',dateYM)} </h3>
`
;
while ( mRef === dt.getMonth( ) )
{
if ( dt.getDay() == myForm.Day.value )
myForm.result.innerHTML = dt。 toLocaleDateString('en-US',dateLong) '
'/span>
dt.setDate(dt.getDate() 1)
} }
myForm.oninput = setDays
setDays() // init
body {
font : 12px/15px normal verdana, arial;
margin : 1.5em;
}
輸出 {
display : block;
white-space : pre;
margin-top : 2em;
}
<form name="my-form">/span>
< select name="months" data-year="2021">
<option value="1"/span> > 一月 </option>
<option value="2"/span> > 二月 </option>/span>
<option value="3"/span> > 三月 </option>
<option value="4"/span> > 四月 </option>/span>
<option value="5"/span> > 五月 </option>
<option value="6"/span> > 六月 </option>/span>
<option value="7"/span> > 七月 </option>
<option value="8"/span> > 八月 </option>/span>
<option value="9"/span> > 九月 </option>
<option value="10"/span>> 十月 </option>
<option value="11"/span>> 11月</option>
<option value="12"/span>> 12月</option>
</select>/span>
選擇一個月份來檢索所有
<select id="Day"> 選擇一個月份來檢索所有的資訊。
<option value="1"/span> > 周一 </選項>
<option value="2"/span> > 周二 </option>
<option value="3"/span> > 星期三 </option>/span>
<option value="4"/span> > 星期四 </option>/span>
<option value="5"/span> > 周五 </選項>
<option value="6"/span> > 星期六 </option>>
<option value="0"/span> > Sunday </option> < ! --周日JS為0 -->
</select>/span>
的它
<output name="result"/span>> </output>>
</form>/span>
<iframe name="sif1" sandbox="allow-form allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/310918.html
標籤:
上一篇:pyspark中的日期格式
