2013-09-21 31 views
0

我正在尝试使用yql显示来自Google新闻的rss提要。目前,如果您在表单中输入一个邮政编码,该邮政只能运行一次,但如果不刷新该页面,则无法输入其他代码。任何帮助将不胜感激!
P1为什么我的onClick 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(...)'并将'return false'添加到'showDiv'函数以防止提交表单。 – pawel

回答

0

尽力为每一次点击创建新<script>元素。

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

这几乎可行。唯一的问题是,我似乎只能追加到身体[0],而“结果”div是身体的第一个孩子,以获得链接显示。这并没有那么糟糕,但如果表单保持在链接之上,这将是件好事。更大的问题是,按钮有时只能起作用。我必须多次点击它才能工作。有想法该怎么解决这个吗? – user2802714

相关问题