2010-01-12 96 views
1

我試圖讓使用雅虎的YQL在網絡廣告應用程式的腳本。該腳本查看文本段落,然後找到一些引用並將其附加到文本上作爲彈出窗口。這一切都沒有問題,直到我必須通過類「verso」循環遍歷每個引用,在獲得我的響應後,它將列表中最後一個元素的所有引用都追加。等待的getJSON響應

下面是javascript代碼(rewrited和簡體)

  var url=""; 
      var version = "RVR1960"; 
      var verso = ""; 

      $("div.post-body").find(".verso").each(function(i){ 
       $resultado = null; 
       verso = $(this).text(); 
       url = "http://query.yahooapis.com/v1/public/yql?" + "q=select%20*%20from%20html%20where%20url%3D%22"+ 
        encodeURIComponent("http://www.biblegateway.com/passage/?search=" + verso + 
        "&version=" + version) + "%22&format=xml'&callback=?"; 
       $pasaje = $(this); 

       $.getJSON(url,function(data){ 
        if(data.results[0]) 
        { 
         $resultado = null; 
         $resultado = $(data.results[0]).find("div.result-text-style-normal:first"); 
         $resultado.find("h5, div, a").remove(); 
         $("<div class='cita'><span class='left'>&ldquo;</span>"+ 
          $resultado.html()+ 
          "<p align='right'><b>"+verso+"</b></p>"+ 
          "<span class='right'>&rdquo;</span></div>").appendTo($pasaje); 
        } 
        else 
        { 
         $resultado = $("<p>Pasaje no encontrado.</p>"); 
        } 
       }); 
      }); 

,這裏是我的html:

<div class="post-body"><b class="verso">Juan 3:16</b><b class="verso">Mateo 11:28</b><b class="verso">Juan 1:1</b></div> 

我會感激所有幫助

+1

您的預期結果是什麼,實際發生了什麼? – mkoryak 2010-01-12 22:46:41

+0

我希望腳本分別將每個引用添加到每個元素的「verse」類。相反,我得到它追加所有在我的每個循環的最後一個元素。 – 2010-01-14 16:00:02

回答

3

所以,我有變化在你的代碼幾件事情,現在它的工作原理,有樂趣;)

var url=""; 
var version = "RVR1960"; 
var verso = ""; 

$("div.post-body > b.verso").each(function(i){ 
    resultado = null; 
    verso = $(this).text(); 
    url = "http://query.yahooapis.com/v1/public/yql?"+"q=select%20*%20from%20html%20where%20url%3D%22"+encodeURIComponent("http://www.biblegateway.com/passage/?search="+verso+"&version="+version)+"%22&format=xml'&callback=?"; 

    $.getJSON(url,function(data){ 
     if(data.results[0]) 
     { 
      resultado = null; 
      resultado = $(data.results[0]).find("div.result-text-style-normal:first"); 
      resultado.find("h5, div, a").remove(); 
      $("<div class='cita'><span class='left'>&ldquo;</span>"+resultado.html()+"<p align='right'><b>"+verso+"</b></p>"+"<span class='right'>&rdquo;</span></div>").appendTo($("div.post-body > b.verso")[i]); 
     } 
     else 
     { 
      resultado = $("<p>Pasaje no encontrado.</p>"); 
     } 
    }); 
}); 
+0

我也回答了這個問題,並解決了一些其他問題,非常感謝。 – 2010-01-15 11:30:48