2012-01-01 66 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