javascript - 如何更改从 JSON 创建的表的单元格颜色

标签 javascript php html mysql

我从 JSON 创建了一个 HTML 表。该表是大学学期 map ,包括学生 ID、年份、学期以及毕业所需的类(class)。我已成功创建表格,但我希望类(class)单元格的颜色取决于类(class)状态。例如,如果学生参加了 CSCI 135,则该单元格颜色应为绿色。如果类(class)正在进行中,单元格颜色应为黄色。如果需要取出,细胞应该是红色的。

我获取所有类(class)的查询是

$getCourses = "SELECT * FROM student_majors WHERE student_id = $studID;";

查询类(class)状态

$status = "SELECT * FROM course_status WHERE student_id = $studID;";

我用来创建表格的函数如下

function CreateTableFromJSON() {
        var myCourses = <?php echo $test1; ?> ;
        var col = [] ;
        var col2 = ["Year","Term","Requirement","","","","","Core","","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");
        var tr = table.insertRow(-1);                

        for (var i = 0; i < col2.length; i++) {
            var th = document.createElement("th");     
            th.innerHTML = col2[i];
            tr.appendChild(th);
        }
        for (var i = 0; i < myCourses.length; i++) {
            tr = table.insertRow(-1);
            for (var j = 0; j < col.length; j++) {
                var tabCell = tr.insertCell(-1);
                tabCell.innerHTML = myCourses[i][col[j]];
            }
        }
        var divContainer = document.getElementById("showData");
        divContainer.innerHTML = "";
        divContainer.appendChild(table);
    }

我尝试过使用 jquery、js 函数根据类(class)状态更改单元格的颜色,但这些都不起作用。

function f_color(){
            if (document.getElementByTagName('td').value = 'CSCI135') {
                document.getElementByTagName('td').style.background="yellow";
            }
        }
         for (var k = 0; k< col.length; k++){
                $("#output td:contains(CSCI135)").attr("style","background-color:green");
                $("#output td:contains(CSCI135)").attr("style","background-color:red");
            }

最佳答案

我在准备表格本身时编写了示例片段来设置背景颜色。您可以引用这两种设置背景颜色的方法,并尝试在您的场景中实现。

var myCourses = [{
   "Year": 2018,
   "Term": 'A',
   "Requirement": 'Course',
   "Core": 'CSCI135',
   "Credits": 120
},
{
   "Year": 2019,
   "Term": 'A',
   "Requirement": 'Course',
   "Core": 'CSCI136',
   "Credits": 130
},
{
   "Year": 2019,
   "Term": 'A',
   "Requirement": 'Course',
   "Core": 'CSCI200',
   "Credits": 100
},
{
   "Year": 2019,
   "Term": 'A',
   "Requirement": 'Course',
   "Core": 'CSCI123',
   "Credits": 140
},
{
   "Year": 2019,
   "Term": 'A',
   "Requirement": 'Course',
   "Core": 'abc',
   "Credits": 150
}
];
function CreateTableFromJSON() {
        var col = [] ;
        var col2 = ["Year","Term","Requirement","Core","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");
        var tr = table.insertRow(-1);                

        for (var i = 0; i < col2.length; i++) {
            var th = document.createElement("th");     
            th.innerHTML = col2[i];
            tr.appendChild(th);
        }
        for (var i = 0; i < myCourses.length; i++) {
            tr = table.insertRow(-1);
            for (var j = 0; j < col.length; j++) {
                var tabCell = tr.insertCell(-1);
                tabCell.innerHTML = myCourses[i][col[j]];
                /* 1st Way*/
                if(col[j] == 'Credits'){
                   if(myCourses[i][col[j]] > 130 ){
                    tabCell.style.background = 'green'; 
                   }
                   else if(myCourses[i][col[j]] < 130 ){
                    tabCell.style.background = 'red'; 
                   }
                   else {
                    tabCell.style.background = 'yellow'; 
                   }
                }
                /*2nd Way */
                if(col[j] == 'Core'){
                   if(myCourses[i][col[j]] == 'CSCI135' ){
                    tabCell.className = 'success'; 
                   }
                   else if(myCourses[i][col[j]] == 'CSCI123' ){
                    tabCell.className = 'completed'; 
                   }
                   else {
                    tabCell.className = 'inprocess'; 
                   }
                }
            }
        }
        var divContainer = document.getElementById("showData");
        divContainer.innerHTML = "";
        divContainer.appendChild(table);
    }
    
  CreateTableFromJSON();
.success{
   background: green;
}

.completed{
   background: red;
}

.inprocess{
  background: yellow;
}
<div id="showData"></div>

关于javascript - 如何更改从 JSON 创建的表的单元格颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55699560/

相关文章:

php - 添加超链接到 MYSQL 支持的 PHP 搜索引擎

javascript - HTML 选择标题

javascript - 如何在循环中将 json 数据显示为 HTML

javascript - 为什么 javascript 不能在复选框上工作?

javascript - 在 Controller 和数据对象之间同步数据

javascript - 使用 Jasmine 测试 instanceof

php - 尽管列不为空,但仍插入记录

javascript - jQuery 切换和动画行为问题

php - 如何在 php 中访问一个 json 数组?

asp.net - 如何为 ModalPopupExtender 实现不透明的 BackgroundCssClass