2012-01-01 37 views
1

我试图用其他内容替换div的内容,但这两个内容都是JavaScript代码,当我按下调用该函数的按钮时,整个页面刷新,并且在功能新的JavaScript被加载到页面上(而且看上去损坏太)把javascript放入jquery .html函数

下面是我用

function refresh(){ 
alert("button pressed"); 
$("#tweet1").html('<script>new TWTR.Widget({version: 2, type: "search", search: "#abbaseya", interval: 15000, subject: "widget", width: 300, height: 360,theme: { shell: {  background: "#8ec1da",  color: "#ffffff" },tweets:{background:"#ffffff",color:"#444444",links:"#1985b5"}},features:{scrollbar:true,loop:true,live:true,behavior:"default"}}).render().start();<\/script>'); 
} 

什么我做错了我的JavaScript函数? tweet1仅仅是一个带有ID DIV,和上面的函数获得由按钮

这里的我使用的按钮,我有一个表格在html

<form style="float:right; "> 
     <input type="text"/><input type="button" value="Refresh" onclick="refresh()"/> 
     </form> 
+0

是您正在使用表单按钮的按钮? – 2012-01-01 15:55:42

+0

这真的没有道理;为什么不直接将该JavaScript直接编码到事件处理程序中?无论如何,页面可能会让人耳目一新,因为您点击的元素是''标签或“submit”元素。 – Pointy 2012-01-01 15:55:58

+0

是的按钮是一个表单按钮 – KamalSalem 2012-01-01 16:08:45

回答

3

确实没有理由叫动态将内联脚本标记注入到DOM元素中。只需将脚本标签的主体作为常规JavaScript来执行即可。

function refresh() { 
    alert("button pressed"); 
    new TWTR.Widget({version: 2, type: "search", search: "#abbaseya", interval: 15000,  
    subject: "widget", width: 300, height: 360,theme: { shell: {  background: 
    "#8ec1da",  color: "#ffffff" },tweets: 
    {background:"#ffffff",color:"#444444",links:"#1985b5"}},features: 
    {scrollbar:true,loop:true,live:true,behavior:"default"}}).render().start(); 
    return false; // prevent refresh 
} 
+0

我试过你的解决方案,页面仍然完全刷新,我只呈现在整个页面的JavaScript片。 – KamalSalem 2012-01-01 16:05:08

+0

如果出现错误,它仍然会刷新,因为它永远不会“返回false”。所以删除“返回false”并寻找错误消息(在Chrome devtools,萤火虫,等等)。 – mahemoff 2012-01-01 16:08:45

+0

只在IE浏览器中显示错误内部错误=(document.getElementsByTagName(...)。0'为空或不是对象 – KamalSalem 2012-01-01 16:15:19