0

データを取得してliに書き出したJSON urlファイルがあります。JSON ファイルへのリンクはhttps://www.inquicker.com/facility/americas-family-doctors.jsonです。私のフィドルファイルへのリンクはhttp://jsfiddle.net/VVnSC/17/です。各場所の次の利用可能な時間に時間を絞り込もうとしています。そのため、ブレントウッド、スマーナ、スプリング ヒルの各場所に 1 つの時間 (次に利用可能な時間) しかありません。また、名前のダッシュの前にある場所の名前を削除しようとしているので、人の名前だけが表示されます。すべてのヘルプは大歓迎です、ありがとう。

<!DOCTYPE html>
<html>
<head>
<title>AFD TEST</title>
<script type="text/javascript"src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js">   </script>
<script>
$(document).ready(function(){
$.getJSON('https://www.inquicker.com/facility/americas-family-doctors.json',
    function(data){
    console.log(data.facility);
    $.each(data.schedules, function(i, name){
        times=''
            if (name.available_times.length){
                times='<ul>'
                $.each(name.available_times,function(i,o){
                    for (var i; i < 1; i++) {
                    times+='<li><a href="'+ name.available_times[0].url +'">'+o.when+'</a></li>'
                    }
                })
                times+='</ul>'
            }
            else{
               times='<ul><li>No Time Available</li></ul>'                    
            }
        $('#names').append('<li>' + (name.name) + times + '</li>');
    });
});
});
</script>
</head>
<body>
<ul id="names"></ul>
</body>
</html>
4

3 に答える 3

0

いくつかの凝った日付と時刻の比較、曜日と時刻の解析と比較を行う必要があります。

以下は、時刻と日付を解析します(どのように機能するかについては、このフィドルを参照してください)。これには、次のものも必要date.jsです(フィドルのリソースとして追加されます)。

$(document).ready(function(){
    $.getJSON('https://www.inquicker.com/facility/americas-family-doctors.json',
        function(data){

            var earliest = {};
            var doctor = {};
            var links = {};
            $.each(data.schedules, function(i, name) {
                var location = name.name.split(' - ')[0];
                var dr_name = name.name.split(' - ')[1];
                if (name.available_times.length) {
                   if (location in earliest) {   // location has already been stored.
                      var newTime = parseAvailableDate(name.available_times[0].when);
                      if (newTime.isBefore(earliest[location])) {
                         earliest[location] = newTime;
                         doctor[location] = dr_name;  
                         links[location] = name.available_times[0].url;
                      }                    
                   }
                   else {
                      earliest[location] = parseAvailableDate(name.available_times[0].when); 
                      doctor[location] = dr_name; 
                      links[location] = name.available_times[0].url;                       
                   } 
               }                    
            });
            for (i in earliest) {
                $("#names").append("<ul>Location: "+i+"<li>Doctor: "+doctor[i]+"</li><li>Time: <a href='"+links[i]+"'>"+earliest[i].toString("dddd dd MMMM yyyy H:mm tt")+"</a></li></ul>");         
            }
    });
});

function parseAvailableDate(dateString) {
    var trimmedString = dateString.replace(/^\s\s*/, '');
    var avTime=trimmedString.split(' ')[0],
        ampm=trimmedString.split(' ')[1],
        avDay=trimmedString.split(' ')[2];
    var avDate = Date.parse("next "+avDay);
    avDate.addHours(avTime.split(':')[0]).addMinutes(avTime.split(':')[1]);
    if (ampm == "pm" && avTime.split(':')[0] != "12") avDate.addHours(12);

    return avDate;
}   

編集

場所が固定されていて、注文を考えている場合は、次のように変更してください。

            for (i in earliest) {
                $("#names").append("<ul>Location: "+i+"<li>Doctor: "+doctor[i]+"</li><li>Time: <a href='"+links[i]+"'>"+earliest[i].toString("dddd dd MMMM yyyy H:mm tt")+"</a></li></ul>");         
            }

に:

            displayDetails("Brentwood", earliest, doctor, links);
            displayDetails("Smyrna", earliest, doctor, links);
            displayDetails("Spring Hill", earliest, doctor, links);

この関数を作成します(別のフィドルを参照):

   function displayDetails(location, earliest, doctor, links) {
            $("#names").append("<ul>Location: "+location+"<li>Doctor: "+doctor[location]+"</li><li>Time: <a href='"+links[location]+"'>"+earliest[location].toString("dddd dd MMMM yyyy H:mm tt")+"</a></li></ul>");         
   }
于 2012-12-11T17:28:16.950 に答える
0

パターンがある場合は、正規表現を使用することをお勧めします

このコードスニペットを変更するだけです

$('#names').append('<li>' + (name.name) + times + '</li>');

これとともに

$('#names').append('<li>' + (name.name.replace(/.*?-\s/,'')) + times + '</li>');

これを試してみてください。ここに更新があります

http://jsfiddle.net/VVnSC/47/
于 2012-12-11T16:21:19.680 に答える
0

正規表現を使用する必要があります。何かのようなもの

var regexp = /- (.*)/g;
var nameShort = regexp.exec(name.name);

名前は nameShort[1] に配置されます。

だからあなたのコードで置き換えます

$('#names').append('<li>' + (name.name) + times + '</li>');

var regexp = /- (.*)/g;
var nameShort = regexp.exec(name.name);
$('#names').append('<li>' + (nameShort[1]) + times + '</li>');
于 2012-12-11T16:04:05.867 に答える