2012-03-12 2 views
1

JavaScript가 여기에오고 .. div 태그의 많은 섹션이 있습니다 ..이 스크립트는 모든 div에 대해 공통적으로 사용하고 싶습니다 .. URL은 해당 div가있는 참조를 변경해야합니다. plz help .. ??각 div 태그를 쓰는 대신 일반적인 javascript를 사용하는 방법은 무엇입니까?

<script type="text/javascript"> 

var feedcontainer1=document.getElementById("feeddiv1") 
var rssoutput1="<b>TOI</b><br /><ul>" 

function rssfeedsetup1(){ 
google.load("feeds", "1") 
var feedpointer1=new google.feeds.Feed("http://handheld.softpedia.com/backend-software.xml") //Google Feed API method 
feedpointer1.setNumEntries(10) //Google Feed API method 
feedpointer1.load(displayfeed1) //Google Feed API method 
} 

function displayfeed1(result){ 
if (!result.error){ 
var thefeeds1=result.feed.entries 
for (var i=0; i<thefeeds1.length; i++) 
rssoutput1+="<li><a href='" + thefeeds1[i].link + "'>" + thefeeds1[i].title + " »" + "</a></li>" 
rssoutput1+="</ul>" 
feedcontainer1.innerHTML=rssoutput1 
} 
else 
alert("Error fetching feeds!") 
} 
</script> 

답변

1

Google에서 반환 한 데이터를 어디에 두어야 하는지를 아는 콜백 함수를 만들어야합니다. Javascript에서이 작업을 수행하는 가장 좋은 방법은 함수 클로저를 사용하여 대상을 기억하는 것입니다. 따라서 같은 콜백을 생성하는 기능이 필요 :이 기능은 여러 번 호출 할 수 있습니다

// Return function that receives feed data from google and populates the given div. 
function makeDisplayFeedCallback(divId) { 
    var destDiv = document.getElementById(divId) 
    return function callback(result) { 
     var output = "<b>TOI</b><br /><ul>" 
     if (!result.error) { 
      var entries = result.feed.entries 
      for (var i = 0; i < entries.length; i++) 
       output += "<li><a href='" + entries[i].link + "'>" + entries[i].title + " »" + "</a></li>" 
      output += "</ul>" 
      destDiv.innerHTML = output 
     } 
     else 
      alert("Error fetching feeds!") 
    } 
} 

을 때마다 서로 다른 div의를 채우는 방법을 알고있는 함수를 반환합니다. 당신이 좋아하는 뭔가를 호출합니다 :

var callback = makeDisplayFeedCallback("feeddiv1"); 
setupRssFeed(callback); 

그리고 마지막으로, 당신의 설정 기능은 콜백을 필요로 (아마도 다른 매개 변수) :

function setupRssFeed(callback) { 
    google.load("feeds", "1") 
    var feed = new google.feeds.Feed("http://handheld.softpedia.com/backend-software.xml"); 
    feed.setNumEntries(10); 
    feed.load(callback); 
} 

전반적으로,이 때문에,뿐만 아니라 문제의 더 나은 분리입니다 유지하기가 더 쉬울 것입니다.

+0

+1 - jQuery없이 똑똑한 솔루션! 정의되지 않은 catch되지 않은 형식 오류의 특성 '피드'를 읽을 수 없습니다 : 설정할 수 없습니다 재산 'innerHTML을'널의를 – jmort253

+0

catch되지 않은 형식 오류가 이러한 오류를 얻고있다 지정된 div 태그 그리고 마지막으로 body 태그의 끝 부분에 fuction을 호출했습니다. 코드를 삽입하는 데 문제가 있었습니까? – Suren

+0

내가 머리 태그 안에 쓴 첫번째 스크립트를 .. 2 층과 3 스크립트 내가 내부 쓴 – Suren

0

각 div는 피드 URL을 "id"속성에 저장할 수 있습니다. 또한 그들에게 모든 수업을 제공하십시오. 마지막으로, jQuery를 포함시킨다.

<div class='feed' id='http://handheld.softpedia.com/backend-software.xml'></div> 
<div class='feed' id='http://handheld.softpedia.com/frontend-software.xml'></div> 

그런 다음 모든 피드 시작 jQuery를 사용 : 이제 코드 같은 것을 할 수있다 (다만 피드의 URL을 얻을 수있는 "이"키워드를 사용해야합니다

$('.feed').each(rssfeedsetup1); 

을하는 이 피드를 피드에 추가하려면 ($ (this) .append (result))

+0

내 코드를 편집하고 설명 해주실 수 있습니다 .. ?? UR 응답으로 분명하지 않다 ... 도와주세요 .. ?? 고마워 .. – Suren

관련 문제