实际上我正在开发一个比较两个日期的函数(我从隐藏输入获得的一个日期,另一个日期 - 当前日期时间)。 我在JS中编写了一个完美的函数:
var elements = document.getElementsByClassName("getTime");
var names = [];
for(var i=0; i<elements.length; i++) {
names = elements[i].value;
var dece = moment(names).format();
var cureTime = moment().format();
seco=moment().diff(dece, 'seconds');
if ((Math.floor(seco / 60)) >= 1 && (Math.floor(seco / 60))<60) {
console.log(Math.floor(seco / 60) + " minutes");
document.getElementsByClassName("time").innerHTML = Math.floor(seco / 60) + " minutes ago";
}else if(((Math.floor(seco / 3600)) >= 1) && ((Math.floor(seco / 3600))<24))
{
console.log(Math.floor(seco / 3600) + " hours");
document.getElementsByClassName("time").innerHTML = Math.floor(seco / 3600) + " hours ago";
}else if (((Math.floor(seco / 86400)) >= 1) && ((Math.floor(seco / 86400)) <30))
{
console.log(Math.floor(seco / 86400) + " days");
document.getElementsByClassName("time").innerHTML = Math.floor(seco / 86400) + " days ago";
}else if (((Math.floor(seco / 2592000)) > 1) && ((Math.floor(seco / 2592000)) <= 12))
{
console.log(Math.floor(seco / 2592000) + " months");
document.getElementsByClassName("time").innerHTML = Math.floor(seco / 2592000) + " months ago";
}else if((Math.floor(seco / 31536000)) > 1)
{
console.log(Math.floor(seco / 31536000) + " years");
document.getElementsByClassName("time").innerHTML = Math.floor(seco / 31536000) + " years ago";
}
}
因此,所有这些console.logs(在每个if语句中)都会在日期中返回正确的差异。 但现在我无法理解如何将所有这些差异解析为具有相同类名的相应span字段。我的HTML看起来像这样:
@foreach($repoData as $kek)
<span class="time" id="openedOn"></span>
<input type="hidden" class="getTime" id="time" value='{!! $kek->created_at !!}'>
@endforeach
要清楚这个FOREACH会生成几个存储在隐藏输入中的日期。然后我从这个隐藏的输入中获取值并将它们传递给我在JS中的函数。 所以我无法理解我应该如何将JS函数中的元素解析为具有类名称 - “time”的跨度。 请帮忙。
答案 0 :(得分:1)
getElementsByClassName
函数返回一个数组(阅读更多here)因此你需要使用数组表示法来访问它的元素
document.getElementsByClassName("time")[0].innerHTML
在您的情况下,由于您访问循环中的元素,您应该只使用计数器(i
)。
document.getElementsByClassName("time")[i].innerHTML
将上述内容替换为其工作的所有条件。