2017-04-23 21 views
0

以下に示すコードは、getURI関数を使用してSQLデータベースからフェッチされるjsonオブジェクトです。ユーザーがリストビューリストの1つをクリックした場合にのみ、この情報はすべてdetails.htmlに表示されます。ユーザーがリスト内のいずれかをクリックしないと、リストビューはstatus.htmlページに残ります。データベースに挿入されたテキスト入力に基づいてテキストの色を変更します。

ので、これはJSONのために私のコードです:

$(document).ready(function() { 
    var url = "FYPphp/json.php"; 
    $.getJSON(url, function(result) { 
     console.log(result); 
     $.each(result, function(i, field) { 
      var id = field.id; 
      var name = field.name; 
      var ic = field.ic; 
      var phone = field.phone; 
      var home = field.home; 
      var vehicle = field.vehicle; 
      var plat = field.plat; 
      var color = field.color; 
      var wash = field.wash; 
      var stat = field.stat; 
      $("#listview").append("<a class='item' href='details.html?id=" + id + "&name=" + name + "&ic=" + ic + "&phone=" + phone + "&home=" + home + "&vehicle=" + vehicle + "&plat=" + plat + "&color=" + color + "&wash=" + wash + "'><span class='item-note'><p>" + stat + "</p></span><h2>" + name + " </h2></a>"); 
     }); 
    }); 
}); 

あなたはappendメソッドに見てみると、(クラス項目ノートで)「STAT」と呼ばれる変数があります。この変数には、sql tableに "done"、 "pending"または "cancel"の3つの値があり、details.htmlから挿入できます。 details.html内の変数の選択のコード「STAT」:

<div class="item"> 
    <strong>Mark this entry as: </strong> 
     <select id="stat"> 
      <option id="done">Done</option> 
      <option id="pending">Pending</option> 
      <option id="cancel">Cancel</option> 
     </select> 
</div> 

更新のためのボタン「STAT」変数は、このようなものです:

$("#update").click(function() { 
    var id = $("#id").val(); 
    var stat = $("#stat").val(); 
    var dataString = "id=" + id + "&stat=" + stat + "&update="; 

    $.ajax({ 
     type: "POST", 
     url: "FYPphp/update.php", 
     data: dataString, 
     crossDomain: true, 
     cache: false, 
     beforeSend: function() { 
      $("#update").val('Updating...'); 
     }, 
     success: function(data) { 
      if (data == "success") { 
       alert("Updated!"); 
       $("#update").val("Update"); 
      } else if (data == "error") { 
       alert("error"); 
      } 
     } 
    }); 
}); 

私は自分の色で、これらの値の表示を行いたいですリストビュー(クラスitem-note)で、緑は「完了」、黄色は「保留中」、赤は「キャンセル」です。 This is a screenshot of the listview

これを行う可能性はありますか? ありがとうございます。

答えて

0

私は何かが欠けているかもしれませんが... ....作成するときにそれを設定することはできません?

$("#listview").append("<a class='item' href='details.html?id=" + id + "&name=" + name + "&ic=" + ic + "&phone=" + phone + "&home=" + home + "&vehicle=" + vehicle + "&plat=" + plat + "&color=" + color + "&wash=" + wash + "'><span class='item-note'><p>" + stat + "</p></span><h2>" + name + " </h2></a>"); 

フィールド「stat」に基づいてクラス名などを設定することができます。

var bgColor = (stat == "done" ? "green" : (stat == "pending" ? "yellow" : "red"); 
$("#listview").append("<a class='item "+bgColor+"' href='details.html?id=" + id + "&name=" + name + "&ic=" + ic + "&phone=" + phone + "&home=" + home + "&vehicle=" + vehicle + "&plat=" + plat + "&color=" + color + "&wash=" + wash + "'><span class='item-note'><p>" + stat + "</p></span><h2>" + name + " </h2></a>"); 
+0

あなたの解決策は、テキスト「完了」から「緑」または「保留中」から「黄色」および「赤」に動的に変更されます。しかし、文字通りテキストの色を変更することはありません。後で ' "+ stat +"'を使ってみましたか?何も働いていないようだ。 –

+0

さて、あなたはまずこのことを理解しなければならないと思います。文字列を作成しています。あなたは自分でテキストを構築しています。したがって、まず、あなたが達成しようとしていることをHTMLで確認する必要があります。私の例では、 "テキスト"を変更しないでください。結果としての(追加された)項目にCSSクラスを追加することを提案しています。クラス名(緑色の赤色または黄色)が計算され、bgColor変数に格納され、その変数が最終文字列に連結されます。これを念頭に置いて、これらのcssクラスを作成すると、cssから3つの状態の外観を制御できます。だから.1)クラス名を解決する2)cssクラスを追加する3)アイテムに追加する – user5328504

+0

まず、あなたが構築しているものを理解しなければなりません。この作業を行うにはあまりにも多くの方法があります。私はあなたの "item"クラスがどこに定義されているかを見直しました。私のコードでは、項目の隣に "bgColor"が追加されています。だから私は新しいCSSクラスを追加しています。あなたは "item"が設定されているところで行ってください。そこには3つの新しいクラスが赤色の緑と黄色になっています。 – user5328504

関連する問題