5秒ごとに新しいデータを表示するAjax関数があるとします。これで、新しいデータがプッシュ(表示)されるたびに、その特定の値のcss(class = "av")の色を変更したいと思います。ajaxは現在5行を表示していますが、変更した値の色のみを変更したいと思います。それ、どうやったら出来るの?どうもありがとう
私のコード:
<script type="text/javascript">
$(document).ready(function(){
//function to get data from database
function getRealData(){
$.ajax({
url: 'test_api.php',
data: "", dataType: 'json',
success: function(rows) {
var text = '';
for (var i in rows) {
var row = rows[i];
var availability = row[3];
var hostName = row[2];
var intranet = row[6];
var timeRespons = row[4];
text += "<div class='box'><b>availability: </b><span class='av'>"+availability+"</span><b> hostName: </b>"+hostName+
"<b> intranet: </b>"+intranet+"<b> timeResponse: </b>"+timeRespons;
text += '<br/ ></div>';
}
$("#content").html(text);
}
});
}
//this refreshes data every 2seconds
setInterval(getRealData, 5000);
//call the function to display data
getRealData();
//notification
function notify(){
var avValue = $(".av").html();
console.log(avValue);
if(avValue == 1){
$(".av").css({"color":"red"});
}
}
setInterval(notify, 2000);
notify();
});
</script>
編集:(これは出力であり、1の色を変更する必要があります)
availability: 1 hostName: aaa intranet: vvvvv timeResponse:0.144
availability: 0 hostName: zzz intranet: rrrrr timeResponse:0.028
availability: 1 hostName: qqq intranet: eeeee timeResponse:0.160
availability: 0 hostName: eee intranet: qqqqq timeResponse:0.116
availability: 0 hostName: ttt intranet: wwwww timeResponse:0.046
availability: 0 hostName: uuu intranet: kkkkk timeResponse:0.116
また、avValue == 1のときに.boxに新しいクラスを追加し、そのクラスが存在する場合はそれに基づいて何かを行うことも考えていました。しかし、これも機能しません。とても不思議です。それは非同期またはキャッシングajaxと関係があるのでしょうか?
ここに2つのタイマーを設定する必要はありません。作成する.av
ときに、スパンのスタイルを設定するだけです。という新しいCSSクラスを追加しavHighlight
、HTMLを作成するときに、availability
が1であるかどうかをテストします。そうである場合は、新しいavHighlight
クラスを追加します。
これを行うnotify()
と、関数とそれに関連するタイマーを削除できます。
css
.avHighlight {
color: red
}
Javascript
text += '<div class="box"><b>availability: </b>
<span class="av ' + (availability == 1 ? 'avHighlight' : '') + '">'+availability+'</span>' +
'<b> hostName: </b>'+hostName+ '<b> intranet: </b>'+intranet+'<b> timeResponse:</b>'+timeRespons;
text += '<br/ ></div>';
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加