2013-09-21 10 views
0

나는 yql을 사용하여 Google 뉴스에서 rss 피드를 표시하려고합니다. 현재 양식에 우편 번호를 입력하면 한 번 작동하지만 페이지를 새로 고치지 않고 다른 코드를 입력 할 수는 없습니다. 어떤 도움이라도 대단히 감사하겠습니다!
P1onClick js 함수 호출이 페이지 당 한 번만로드됩니까?

 <script> 
     function top_stories(o){ 
      var items = o.query.results.item; 
      var output = ''; 
      var no_items=items.length; 

      for(var i = 0; i < 4; i++) { 
      var title = items[i].title; 
      var link = items[i].link; 
      var desc = items[i].description; 
      output += "<h3><a href='" + link + "'>"+title+"</a></h3>" + desc + "<hr/>"; 
      } 
     document.getElementById('results').innerHTML = output;  
     } 
     </script> 
    </head> 
    <body> 
     <form name="input" action="" method="get" id="zc"> 
     Zip Code: <input id="zip" type="text" name="zip"> 
    <input id ="zipbutton" type="Button" value="Submit" onClick="showDiv(document.getElementById('zc').zip.value);" > 

    <div id="results" ></div> 
    <script id="yql"></script> 
    <script>  
    function showDiv(zip) {    
    var a = "http://query.yahooapis.com/v1/public /yql?q=select%20*%20from%20rss%20where%20url%20%3D%20'http%3A%2F%2Fnews.google.com%2Fnews%3Fgeo%3D" + zip + "%26output%3Drss'%0A&format=json&diagnostics=true&callback=top_stories"; 
    document.getElementById("yql").setAttribute("src",a);        
     } 
    </script> 
    </body> 
+0

제출 버튼에 'onclick'을 사용하지 말고 양식에'submit'을 사용하십시오 (버튼을 클릭하지 않고 양식을 제출하는 방법이 있습니다). 이벤트 리스너에서'return showDiv (...)'를 사용하고 폼이 제출되는 것을 막기 위해'showDiv' 함수에'return false '를 추가하십시오. – pawel

답변

0

시도는 모든 클릭에 대한 새로운 <script> 요소를 만들 수 있습니다.

var script = document.createElement('script'); 
script.setAttribute("src", a); 
document.getElementsByTagName('head')[0].appendChild(script); 
+0

거의 작동합니다. 유일한 문제는 링크를 표시하기 위해 "결과"div가 본문의 첫 번째 자식 인 동안 body [0]에만 추가 할 수있는 것처럼 보입니다. 이것은 그렇게 나쁘지는 않지만 양식을 링크 위에 올려 놓는 것이 좋을 것입니다. 더 큰 문제는 버튼이 가끔씩 만 작동한다는 것입니다. 나는 그것이 작동하기 위해 그것을 여러 번 클릭해야한다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까? – user2802714