使用 javascript 使用模数将 8 天或更多天减去带有工作日的选择时出现问题



我可以选择哪些选项是星期几。我想在当前选定的日期中添加/减去天数。

我遇到的问题是当我必须减去 8 天或更长时间到当天时。我变得不确定了。我知道我超出了范围,但我无法为这种情况找到正确的解决方案......

我发现新的失败,如果是星期天,并添加 1 天,给出未定义。

当我添加 8 天或更长时间时似乎工作正常..

我错过了什么?问候

var days = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];
var select = document.getElementById("daysSelector");
function sumDays(index, numDays) {
	var i;
	console.log('index: ' + index);
	if (numDays < 0){
   
		var diff = parseInt(index) + parseInt(numDays);
     console.log(diff);
		
		if (diff < 0){	
			
			i = days.length + diff; // Here is the problem
      
		}else{
			i = parseInt(diff) -  parseInt(numDays % days.length);
			 
		}
	}else{
		
		i = parseInt(index) + parseInt(numDays % days.length);	
  	}
	
	return days[i];
  }
var text = document.getElementById("days");
document.getElementById("addDays").onclick = function() { 
console.log(sumDays(select.value,text.value ));
}
<select id="daysSelector">
       <option value="0">Monday</option>
       <option value="1">Tuesday</option>
       <option value="2">Wed</option>
    <option value="3">Thursday</option>
    <option value="4">Friday</option>
    <option value="5">Saturday</option>
    <option value="6">Sunday</option>
 </select>
 <input type="number" id="days"><br>
	<button id="addDays">Add Days</button><br>

这将解决问题(https://codepen.io/anon/pen/MoJdYG(:

function sumDays(index, numDays) {
    var isNegative = parseInt(numDays, 10) > 0 ? false : true;
    var i = parseInt(index, 10) + parseInt(numDays, 10) % days.length;
    if (isNegative) {
        i = days.length + i;
    }
    return days[i % days.length];
}

最新更新