2010-01-12 95 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