我有一个数据库表,其中包含:
Industry risk
--------------
A
B
C
等等。我用 query.php
为 index.php
生成一个动态表并使用 AJAX 自动刷新它。数据被拉取:
$sql="SELECT * FROM scoreboard";
生成的表格:
// Construct the table
echo "<table id='querytable'>\n";
结果由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'>$ ".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";
我制作了一个名为 highlight.js
的 JavaScript 文件其中包含:
$(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');
});
然后我尝试从 query.php
调用它使用:
// Load higlighting syntax
echo "<script type='text/javascript' src='highlight.js'></script>";
但是没有任何反应。我试过给 <div>
标记和 ID 并从 index.php
调用 JavaScript (因为它有 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);
}
最佳答案
你为什么不直接使用 css?
将值添加到 td
的 class
属性中,然后在 css 中设置规则。
添加类似class='CONTENTS'
的类:
echo "<td align='center' class='{$row['codcliente']}'> ...
然后用样式表替换您的 jQuery 代码:
#querytable td.A {background-color : #C0504D; }
#querytable td.B {background-color : #FDE480; }
#querytable td.C {background-color : #9BBB59; }
在您的示例中,内容是简单且有效的 css,如果内容有空格或以数字开头,您需要将它们转换为有效的 css 类名。
(编辑,我将 js 代码复制到我的 css 中而没有修复语法)
关于php - 如何根据内容和使用 PHP/JavaScript 通过 MySQL 查询生成的 : Conditionally format a <td>,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6736479/