如何:根据内容和使用PHP/JavaScript,有条理地格式化通过MySQL查询生成的<td>

rdr*_*rtz 1 javascript php mysql format conditional

我有一个数据库表,其中包含:

Industry risk
--------------
      A
      B
      C
Run Code Online (Sandbox Code Playgroud)

等等.我query.php用来生成动态表index.php并使用AJAX自动刷新它.数据通过以下方式提取:

$sql="SELECT * FROM scoreboard";

并生成表:

// Construct the table

echo "<table id='querytable'>\n";
Run Code Online (Sandbox Code Playgroud)

结果由以下处理query.js并显示index.php:<div id="querydiv"></div>.到现在为止还挺好.现在是棘手的部分.我想有条件地格式化<td>基于内容的背景,这样如果它包含"A"那么 background-color:red;.该<td>是像这样产生的:

// Construct the array

while($row = mysql_fetch_assoc($result)){
    echo '<tr>'."\n";
    echo "<td align='center'>{$row['codcliente']}</td>\n" . "<td align='center'>{$row['nombre']}</td>\n" . "<td align='center'>{$row['ejecutivo']}</td>\n" . "<td align='center'>{$row['banca_as400']}</td>\n" . "<td align='center'>{$row['banca_real']}</td>\n" . "<td align='right'>$&nbsp;".number_format($row['ingresos'], 2)."</td>\n" . "<td align='center'>{$row['ciiu']}</td>\n" . "<td align='center'>{$row['division']}</td>\n" . "<td align='center'>{$row['actividad']}</td>\n" . "<td align='center'>{$row['riesgo_industria']}</td>\n" . "<td align='center'>{$row['riesgo_cliente']}</td>\n" . "<td align='center'>{$row['fecha']}</td>\n" . "<td align='center'>{$row['analista']}</td>\n";
    echo '</tr>'."\n";
}
echo "</table>\n";
Run Code Online (Sandbox Code Playgroud)

我制作了一个名为的JavaScript文件highlight.js,其中包含:

$(function() {
            $("#querytable td:contains('A')").css('background-color','#C0504D'),
            $("#querytable td:contains('B')").css('background-color','#FDE480'),
            $("#querytable td:contains('C')").css('background-color','#9BBB59');
            });
Run Code Online (Sandbox Code Playgroud)

我试着用它来调用它query.php:

// Load higlighting syntax

echo "<script type='text/javascript' src='highlight.js'></script>";
Run Code Online (Sandbox Code Playgroud)

但没有任何反应.我尝试过给<div>标签和id并从中调用JavaScript index.php(因为它有HTML和<head>标签),但这也不起作用.

反正有没有这样做?我究竟做错了什么?谢谢!

附加信息.内容query.js:

// Customize these settings

var seconds = 2;
var divid = "querydiv";
var url = "query.php";

// Refreshing the DIV

function refreshdiv(){

// The XMLHttpRequest object

var xmlHttp;
try{
xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
}
catch (e){
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
}
catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){
alert("Your browser does not support AJAX.");
return false;
}
}
}

// Timestamp for preventing IE caching the GET request

fetch_unix_timestamp = function()
{
return parseInt(new Date().getTime().toString().substring(0, 10))
}

var timestamp = fetch_unix_timestamp();
var nocacheurl = url+"?t="+timestamp;

// The code...

xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
document.getElementById(divid).innerHTML=xmlHttp.responseText;
setTimeout('refreshdiv()',seconds*1000);
}
}
xmlHttp.open("GET",nocacheurl,true);
xmlHttp.send(null);
}

// Start the refreshing process

var seconds;
window.onload = function startrefresh(){
setTimeout('refreshdiv()',seconds*1000);
}
Run Code Online (Sandbox Code Playgroud)

Joe*_*ynn 5

你为什么不用css?

将值添加到class属性td然后在css中设置规则.

添加类如class='CONTENTS':

echo "<td align='center' class='{$row['codcliente']}'> ...
Run Code Online (Sandbox Code Playgroud)

然后用样式表替换你的jQuery代码:

#querytable td.A {background-color : #C0504D; }
#querytable td.B {background-color : #FDE480; }
#querytable td.C {background-color : #9BBB59; }
Run Code Online (Sandbox Code Playgroud)

在您的示例中,内容是简单且有效的css,如果内容具有空格或以数字开头,则需要将它们转换为有效的css类名称.

(编辑,我将js代码复制到我的css而不修复语法)