iT邦幫忙

0

JavaScript 範圍選擇的問題

RIN 2020-11-11 16:25:551972 瀏覽
  • 分享至 

  • xImage

小的是JS菜鳥 最近在手刻日曆
因為在做訂房網站,想問大大 日曆該怎麼做出範圍選擇的功能

這邊附上我不太乾淨的code

目前是希望能夠選取頭跟尾 然後可以取到中間的値
但不知道該怎麼取 QAQ
印象中日曆套件好像也是選頭跟尾,整個範圍都會有樣式 跟他的日期的値

麻煩大大們相救 m(_ _)m

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
firecold
iT邦新手 1 級 ‧ 2020-11-11 16:45:39

雖然我都用套件....
但你應該可以監測每個focus

當有一個focus時
把兩個中間的元素each click應該就可以了

額外還可以做有兩個的時候清除focus(重製選擇)

RIN iT邦新手 5 級 ‧ 2020-11-16 01:28:30 檢舉

果然套件還是比較快 QwQ
謝謝大大, 我會筆記下來~~~!!

1
Han
iT邦研究生 1 級 ‧ 2020-11-11 17:06:37

提供個想法

let min = false;
let max = false;

/**
 * @param {String} date 點到的日期
 */
function clickEvent(date) {
    max = max || date;
    min = min || date;
    if (date > max) {
        max = date;
    } else if (date < min) {
        min = date;
    }

    return [max, min];
}

每次觸發點擊日期的時候紀錄最大最小,收到回傳值後再自己去處理這個範圍內的反灰動作
當然這個 max, min 也可以拿來表單送出的時候用

不想使用套件,要base既有程式,應該可以利用這個想法來去處理

RIN iT邦新手 5 級 ‧ 2020-11-16 01:33:59 檢舉

這想法!!!
謝謝解答 m(_ _)m (拜

1
不明

我只稍作修改給個參考,toggle class那部分我就大概描述,Fight!

全域部分

let my_day = my_date.getDate();
let days = [];//增加這個

getDay()部分

function getDay() {
  let dayID = '';
  dayUL.addEventListener('click', function (e) {
    dayID = e.target.dataset.id;
    if(days[0]!=null) days[1]=dayID;//增加這個
    else days[0]=dayID;//增加這個
    e.target.classList.toggle('checked')
    let y = dayID.slice(0, 4);
    let m = dayID.slice(4, 6);
    let d = dayID.slice(6);
    let dayString = `${y}-${m}-${d}`;
    if(days[0]&&days[1]){//增加這個
      for(let i= parseInt(days[0])+1;i<parseInt(days[1]);i++){
        console.log(i);//列出中件項
        /*這個地方讓你id toggle class*///classList.toggle('checked');
      }
    }
  })
}
RIN iT邦新手 5 級 ‧ 2020-11-16 01:35:02 檢舉

Fight 好暖 QAQQQ 謝謝大大!!!
不好意思讓你看我的髒扣 ((

2

思維給你,剩下的自已來。

日期節點是li。其本身存在對應的index位置。
1.點下去先記錄目前的索引值。點第二次(可用陣列變數來記錄)。再記錄第二個索引值。
2.然後排序這兩個值。(畢竟要由小到大)
3.再用回圈的方式將範圍內的日期節點加上「選擇的css」。

如果再一次點擊。就先清掉所有已選擇。從1開始再run

如果有用jquery的話。是可以不需要回圈。直接定義就好了。
不過我看你沒用jquery。所以就不教了。

RIN iT邦新手 5 級 ‧ 2020-11-16 01:38:46 檢舉

謝謝大大的思維 !! 第一句話被帥到
好的沒問題我研究個
感謝~~~

我要發表回答

立即登入回答