简体   繁体   English

根据状态更改JSON的HTML表格的单元格颜色

[英]Changing JSON's HTML table's cell color based on status

I have a HTML table created by JSON. 我有一个由JSON创建的HTML表。 The table is a college semaster's map, it lists all the required courses for your major. 该表是一个大学制作者的地图,它列出了所有必修课程。 I want the courses' cell color depends on the status. 我希望课程的单元格颜色取决于状态。 For example, green means course is completed, yellow means in progress and red means need to be taken. 例如,绿色表示课程已完成,黄色表示正在进行,需要采用红色表示。 below is the columns, and createtablefromJSON function 下面是列,以及createtablefromJSON函数

var col2 = ["year","term","major1","major2","major3","major4","major5","core1","Core2","Credits"] ;

function CreateTableFromJSON() {
        var myCourses = <?php echo $test1; ?> ;
        var col = [] ;// EXTRACT VALUE FOR HTML HEADER. 
        var col2 = ["year","term","major1","major2","major3","major4","major5","core1","Core2","Credits"] ;
        for (var i = 0; i < myCourses.length; i++) {
            for (var key in myCourses[i]) {
                if (col.indexOf(key) === -1) {
                    col.push(key);
                }
            }
        }
        var table = document.createElement("table");        // CREATE DYNAMIC TABLE.
        // CREATE HTML TABLE HEADER ROW USING THE EXTRACTED HEADERS ABOVE.
        var tr = table.insertRow(-1);                   // TABLE ROW.
        for (var i = 0; i < col2.length; i++) {
            var th = document.createElement("th");      // TABLE HEADER.
            th.innerHTML = col2[i];
            tr.appendChild(th);
        }

My question is how to change cell's color based on status of the course 我的问题是如何根据课程的状态改变细胞的颜色

for (var i = 0; i < myCourses.length; i++) {
          tr = table.insertRow(-1);  // ADD JSON DATA TO THE TABLE AS ROWS.
            for (var j = 0; j < col2.length; j++) {
                var tabCell = tr.insertCell(-1);
                tabCell.innerHTML = myCourses[i][col[j]];     
                   if (<?php in_array ?> (myCourses[i][col[j]] <?php  echo ",". json_encode($done_course) ?> )  {
                                  <?php if ($done) { ?> tabCell.className = 'success'; <?php } ?>  }

                   if (<?php in_array ?> (myCourses[i][col[j]] <?php echo ",". json_encode($pending_course) ?> )  {
                                  <?php if ($pending) { ?> tabCell.className = 'pending'; <?php } ?>  }
                          }
                   if (<?php in_array ?> (myCourses[i][col[j]] <?php echo ",". json_encode($progess_course) ?> )  {
                                  <?php if ($progess) { ?> tabCell.className = 'inprocess'; <?php } ?>  }
                          }
                      }     
                  }
              }
        var divContainer = document.getElementById("showData");
        divContainer.innerHTML = "";
        divContainer.appendChild(table);
    }

you have to check your in array like this, 你必须像这样检查你的数组,

indexOf()

if (myCourses[i][col[j]] == "<?php echo $done_course; ?>")  {
  <?php if ($done) { ?> tabCell.className = 'success'; <?php } ?>
}
else if (myCourses[i][col[j]] == "<?php echo $pending_course; ?>")  {
  <?php if ($pending) { ?> tabCell.className = 'pending'; <?php } ?>  }
}
else {
  <?php if ($progess) { ?> tabCell.className = 'inprocess'; <?php } ?>  }
}

Convert php array to js array. 将php数组转换为js数组。 Then use .includes() function to check 然后使用.includes()函数进行检查

 for (var i = 0; i < myCourses.length; i++) {
      tr = table.insertRow(-1);  // ADD JSON DATA TO THE TABLE AS ROWS.
        for (var j = 0; j < col2.length; j++) {
            var tabCell = tr.insertCell(-1);
            var done_course = <?php echo json_encode($done_course); ?> ;
            var pending_course = <?php echo json_encode($pending_course); ?> ;
            var progress_course = <?php echo json_encode($progress_course); ?> ;
            tabCell.innerHTML = myCourses[i][col[j]];     
              if (done_course.includes(myCourses[i][col[j]])) {
                tabCell.className = 'success'; 
              } else if (pending_course.includes(myCourses[i][col[j]])) {
                tabCell.className = 'completed'; }
                  else {
                    tabCell.className = 'inprocess'; }
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 jQuery-如果表单元格包含数组中的数字,则更改其颜色 - JQuery - changing a table cell's color if it contains a number from array 如何更改通过JSON创建的表格的单元格颜色 - How to change table's cell color created from JSON Javascript HTML Table根据另一个单元格的onclick获取第一列的单元格值 - Javascript HTML Table get first column's cell value based on another cell's onclick 根据下面的颜色更改粘性导航颜色 - Changing sticky nav color based on div below's color 验证 HTML 表格单元格并使用 Javascript 更改背景颜色 - Validation of HTML table cell and changing background color using Javascript 在 Javascript 更改后更改 HTML 表格单元格的背景颜色 - Changing background color of HTML Table cell after Javascript Changes it 如何根据小于表单元格值的选定值过滤 HTML 表 - How to filter a HTML table based on selected value less that a table cell's value 如果表格是动态生成的,如何在点击时更改html单元格的颜色? - How do I change an html cell's color on click, if the table is generated dynamically? PolymerJs表根据数据(JSON)更改单元格的颜色 - PolymerJs table change color of cell based on data (JSON) 使用JavaScript根据JSON值更改表格单元格背景色 - Using javascript to change table cell background color based on json value
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM