0

我是 JS 新手,我的脚本有问题。我想在我的网站上显示员工的资历日期。这是我的JS代码来计算它。

var dateObj1 = new Date( '1992/07/07 18:00:00' );
var dateObj2 = new Date();

//get difference in milliseconds
var diffMilliseconds = dateObj1.getTime() - dateObj2.getTime();

//make the difference positive
if( diffMilliseconds < 0 ) diffMilliseconds *= -1;

//convert milliseconds to hours
var diffYears = ( diffMilliseconds / 1000 ) / 60 / 60 / 24 / 365;

//print on console
var num = diffYears;
num = Math.floor(num);

if (num > 1)
{
document.write(num + ' years');
}
else if (num < 1)
{
document.write('less than one year');
}
else
{
document.write(num + ' year');
}

将有大约 45-50 名员工,而不是创建 50 个 js 文件,而是想var dateObj1 = new Date( '1992/07/07 18:00:00' );在 HTML 中定义就业日期,但并不真正知道如何做到这一点。

有人可以发布要使用的部分 HTML 代码和必须更改的部分 JS。

谢谢你。

4

2 回答 2

0

您可以创建一个包含员工姓名及其指定日期的地图(对象)。然后,您采用计算剩余时间的逻辑(然后显示它),并将其放入循环中。对于地图中的每个员工,计算数量然后打印。

于 2013-01-22T21:00:37.937 回答
0

通过将代码放在一个函数中,并通过它传递来自 HTML 的数据,它应该会产生一些好的结果。

HTML

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Startdate</td>
            <td>Date in years</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Employee #1</td>
            <td>1992/07/07 18:00:00</td>
        </tr>
        <!-- More employees -->
    </tbody>
</table>

JavaScript

var rows = document.querySelectorAll("tbody tr"); // Get all the rows

for(var i = 0; i < rows.length; i++) {
    // For each row, get the start date
    var startdate = rows[i].cells[1].innerText,
        years = calculateYears(startdate);

    // Create a DOM element with the result, and add it to the table
    var td = document.createElement("td"),
        result = document.createTextNode(years);
    td.appendChild(result);
    rows[i].appendChild(td);
}

// Years calculation
function calculateYears(startdate) {
    // Your function, slightly modified
}

这是结果!

于 2013-01-22T21:40:31.827 回答