2017-02-06 4 views
1

У меня есть таблица со всеми листами сотрудника в определенной колонке.Получить значение, если td содержит определенный текст в jQuery

Date Applied Leave Type  Days From Date To Date  Status 
2017-01-01 Vacation Leave 1 2017-01-02 2017-01-03 No Action 
2017-02-01 Sick Leave  1 2017-02-02 2017-02-03 Approved 
2017-03-01 Vacation Leave 2 2017-03-02 2017-03-03 Approved 

Использование JQuery или только ядро ​​JavaScript, как я могу получить количество дней для «Vacation отпусков» и количества дней для «больничного», если были утверждены.

Это, как я принести за стол

function writeResult(res){ 
    var p = document.getElementById("write_result"); 
    p.innerHTML = ""; 

    var addHtml = "<table align=\"center\" border=\"1\" cellspacing=\"0\" style=\"font-weight:regular;\">"; 
     addHtml += "<tr>"; 
     addHtml += "<th>Date Applied</th><th>Leave Type</th><th>Days</th><th>From Date</th><th>To Date</th><th>Status</th>"; 
     for(var i=0;i<res.length;i++){ 
      addHtml += "<tr>"; 
      addHtml += "<td>"+ changeDateFormat(res[i][0]) +"</td>"; 
      addHtml += "<td>"+ res[i][1] +"</td>"; 
      addHtml += "<td>"+ res[i][2] +"</td>"; 
      addHtml += "<td>"+ changeDateFormat(res[i][3]) +"</td>"; 
      addHtml += "<td>"+ changeDateFormat(res[i][4]) +"</td>"; 
      addHtml += "<td>"+ res[i][5] +"</td>"; 
      addHtml += "</tr>"; 
     } 
     addHtml += "</tr>"; 
     addHtml += "</table>" 
     addHtml += "<div>"; 
     addHtml += "<table>"; 
     addHtml += "<tr>"; 
     addHtml += "<th>Vacation Leaves: &nbsp;</th><td id='vacation_leaves'>0</td>"; 
     addHtml += "<th>&nbsp; &nbsp; Sick Leaves: &nbsp;</th><td id='sick_leaves'>1</td>"; 
     addHtml += "</tr>" 
     addHtml += "</table>"; 
     addHtml += "</div>"; 
    p.innerHTML = addHtml; 
    } 

Пример:

отпуск Отпуска = 2 Sick Leave = 1

Спасибо.

+0

Можете вы добавить фактический необработанный html таблицы к вашему вопросу? – Keatinge

ответ

2

Добавить идентификатор в таблицу, как <table id="leaveTable"> то вы могли бы использовать что-то вроде этого:

var approvedVacLeave = 0; 
var approvedSickLeave = 0; 
$("#leaveTable tr").each(function(){ 
    var leaveType = $(this).find("td:nth-child(2)").text(); 
    var numDays = +$(this).find("td:nth-child(3)").text(); 
    var status = $(this).find("td:nth-child(6)").text(); 
    if (status == "Approved") { 
     if (leaveType == "Vacation Leave") { 
      approvedVacLeave += numDays; 
     } 
     else if (leaveType == "Sick Leave") { 
      approvedSickLeave += numDays; 
     } 
    } 
}); 
console.log("Vacation days = " + approvedVacLeave + " and sick days = " + approvedSickLeave); 
1

Это может быть сделано путем держать две переменные (countSickLeave и countVacationLeave) и приращением их в цикл для соответствующего типа оставлять.


См. Модификацию ниже.

function writeResult(res){ 
var countSickLeave = 0; //count variable 
var countVacationLeave = 0; 
var p = document.getElementById("write_result"); 
p.innerHTML = ""; 

var addHtml = "<table align=\"center\" border=\"1\" cellspacing=\"0\" style=\"font-weight:regular;\">"; 
    addHtml += "<tr>"; 
    addHtml += "<th>Date Applied</th><th>Leave Type</th><th>Days</th><th>From Date</th><th>To Date</th><th>Status</th>"; 
    for(var i=0;i<res.length;i++){ 
     addHtml += "<tr>"; 
     addHtml += "<td>"+ changeDateFormat(res[i][0]) +"</td>"; 
     if(res[i][1] == "Sick Leave"){ 
      countSickLeave++; // increment the variable 
     } 
     if(res[i][2] == "Sick Leave"){ 
      countVacationLeave++; 
     } 
     addHtml += "<td>"+ res[i][1] +"</td>"; 
     addHtml += "<td>"+ res[i][2] +"</td>"; 
     addHtml += "<td>"+ changeDateFormat(res[i][3]) +"</td>"; 
     addHtml += "<td>"+ changeDateFormat(res[i][4]) +"</td>"; 
     addHtml += "<td>"+ res[i][5] +"</td>"; 
     addHtml += "</tr>"; 
    } 
    addHtml += "</tr>"; 
    addHtml += "</table>" 
    addHtml += "<div>"; 
    addHtml += "<table>"; 
    addHtml += "<tr>"; 
    // Append the variable count 
    addHtml += "<th>Vacation Leaves: </th><td id='vacation_leaves'>" + countVacationLeave + "</td>"; 
    addHtml += "<th>Sick Leaves: </th><td id='sick_leaves'>" + countSickLeave + "</td>"; 
    addHtml += "</tr>" 
    addHtml += "</table>"; 
    addHtml += "</div>"; 
p.innerHTML = addHtml; 
} 
+0

Вам нужно проверить «Approved» слишком –

+0

. Похоже, он будет делать то, что я хочу, но я предпочитаю иметь другую функцию. Спасибо. – Ibanez1408

Смежные вопросы