2013-01-22 19 views
0

我是新来的JS,并且遇到了我的脚本问题。 我想在员工的网络资历日期上显示。 这是我的JS代码来计算它。如何将信息从html导入到javascript

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 eployees和,而不是创建50个js文件要定义HTML就业日期var dateObj1 = new Date('1992/07/07 18:00:00');但真的不知道该怎么做。

有人可能会发布HTML代码的一部分被使用和部分JS必须被改变。

谢谢。

+0

我认为,谷歌的电子表格会更容易创建。 –

+1

不完全确定你的问题在问什么 - 1992/07/07 18:00:00是固定的日期常数还是每个员工有不同的日期?如果只是这样做45-50次,for循环就足够了。你想要做什么以及背后的理由是什么? – aug

+1

[使用'[data - *]'属性传递与DOM元素相关的数据; jquery使这个简单](http://stackoverflow.com/questions/7261619/jquery-data-vs-attr)。 – zzzzBov

回答

0

您可以创建一个包含员工姓名及其指定日期的Map(对象)。然后你采取逻辑你计算剩下多少时间(然后显示它),并把它放在一个循环中。对于地图中的每位员工,计算该号码然后打印。

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 
} 

Here's the result!