【问题标题】:Slider value adding to date滑块值添加到日期
【发布时间】:2018-07-15 00:13:52
【问题描述】:

我正在制作一个使用纯 JavaScript 添加到日期的滑块。我需要滑块能够将元素的值添加到日期。

例如,如果滑块的值为 24,我需要在日期上加上 24 天。

我已经尝试添加到getDate() 函数中,但是如果它是一个字符串,我所做的只是将它添加到一起。然后我尝试使用parseInt() 将滑块的值变为整数,但是当我将值添加到天数时,它会将日期变为整数。

var sliderDate = document.getElementById('dateSlider');
var outputDate = document.getElementById('dateOutput');
var today = new Date();
var sliderAdded = today;
var day = sliderAdded.getDay();
var month = sliderAdded.getMonth();
var date = sliderAdded.getDate() + sliderDate.value;
var daysOfWeek = [
  "N/A",
  "Monday",
  "Tuesday",
  "Wednesday",
  "Thursday",
  "Friday",
  "Saturday",
  "Sunday"
];
var nameOfMonths = [
  "January",
  "February",
  "March",
  "April",
  "May",
  "June",
  "July",
  "August",
  "September",
  "October",
  "November",
  "December"
];

var sliderDateValue = sliderDate.value;

//connection between slider and input textbox
outputDate.value = sliderDate.value;

sliderDate.oninput = function() {
  outputDate.value = this.value;

};
outputDate.oninput = function() {
  sliderDate.value = this.value;
};

function dateBoundries() {
  if (outputDate.value > 35) {
    outputDate.value = 35;
  } else if (outputDate.value < 0) {
    outputDate.value = 0;
  } else {}
}

if (date == 1 || date == 21 || date == 31) {
  suffix = "st ";
} else if (date == 2 || date == 22) {
  suffix = "nd ";
} else if (date == 3 || date == 23) {
  suffix = "rd ";
} else {
  suffix = "th ";
}

document.getElementById('dateTest').innerHTML =
  daysOfWeek[day] +
  " " +
  date +
  suffix +
  " " +
  nameOfMonths[month] +
  " " +
  today.getFullYear();
<h1>
  <span id="dateTest"></span>
  <input type="textbox" id="dateOutput" onfocusout="dateBoundries()"><br>
  <input type="range" min="1" max="35" value="1" class="slider" id="dateSlider">
  <br>
</h1>

【问题讨论】:

  • 请发表您的添加逻辑!

标签: javascript html html-input


【解决方案1】:

var sliderDate = document.getElementById('dateSlider');
var outputDate = document.getElementById('dateOutput');

var daysOfWeek = [
  "Sunday",
  "Monday",
  "Tuesday",
  "Wednesday",
  "Thursday",
  "Friday",
  "Saturday"
];
var nameOfMonths = [
  "January",
  "February",
  "March",
  "April",
  "May",
  "June",
  "July",
  "August",
  "September",
  "October",
  "November",
  "December"
];

var sliderDateValue = sliderDate.value;



//connection between slider and input textbox
outputDate.value = sliderDate.value;

sliderDate.oninput = function() {
  var today = new Date();
  today.setDate(today.getDate() + Number(this.value));
  outputDate.value = this.value;
  formattedDate(today)

};
outputDate.oninput = function() {
  var today = new Date();
  today.setDate(today.getDate() + Number(this.value));
  sliderDate.value = this.value;
  formattedDate(today)
};


function dateBoundries() {
  if (outputDate.value > 35) {
    outputDate.value = 35;
  } else if (outputDate.value < 0) {
    outputDate.value = 0;
  } else {}
}



function formattedDate(dateN) {
  var date = dateN.getDate()
  if (date == 1 || date == 21 || date == 31) {
    suffix = "st ";
  } else if (date == 2 || date == 22) {
    suffix = "nd ";
  } else if (date == 3 || date == 23) {
    suffix = "rd ";
  } else {
    suffix = "th ";
  }
  document.getElementById('dateTest').innerHTML =
    daysOfWeek[dateN.getDay()] +
    " " +
    date +
    suffix +
    " " +
    nameOfMonths[dateN.getMonth()] +
    " " +
    dateN.getFullYear();
}

formattedDate(new Date());
</h1> <span id="dateTest"></span>
<input type="textbox" id="dateOutput" onfocusout="dateBoundries()"><br>
<input type="range" min="0" max="35" value="1" class="slider" id="dateSlider">
<br>

根据您的问题,我已尝试插入逻辑。如果满意,请告诉我。在您的代码中,计算天数时出现错误,记住星期是从星期日开始的。

【讨论】:

    【解决方案2】:
    <h1>
       <span id="dateTest"></span>
       <input type="textbox" id="dateOutput"  onfocusout="dateBoundries()"><br>
       <input type="range" min="1" max="35" value="1" class="slider" id="dateSlider" onchange="dateOutput.value = parseInt(dateOutput.value) + parseInt(dateSlider.value);"><br>
    </h1>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多