2015-08-25 41 views
1

我想讓自己開始使用jsFiddle。所以我試圖運行一個包含所有HTML,CSS和JavaScript代碼的簡單代碼片段。jsFiddle onload並且在主體中沒有換行

enter image description here

JavaScript不工作,如果我選擇在框架&擴展下拉的onLoad

但它確實工作時,我選擇不換行 - 從下拉列表中

enter image description here

燦你告訴我這意味着什麼。我已經在SO上讀過這個問題JavaScript not running on jsfiddle.net

但是無法理解那裏提到的解決方案。

+0

看看結果iframe中看到的差異的來源。也許這個解釋更清晰:http://stackoverflow.com/a/5830423/218196 –

回答

1

當使用onLoad時,該函數將不會成爲全局函數,因此您無法直接從HTML調用它。如果它是全球性的 - 就像使用無包裝時一樣 - 它可以工作。

onLoad產生類似的東西:

window.onload = function() { 
    function myFunction() { 
    } 
} 

所以,myFunction()纔可見直接在匿名函數關閉。

4

當你選擇onLoad時,你的JavaScript包裝了一個onload函數。這意味着代碼將在頁面加載完成後運行,但在全局範圍內不再可用。它看起來像這樣

window.onload=function(){ 
    function myFunction() { 
     alert("Hello"); 
    } 
} 

一種解決方法可能是讓它們在頁面上的任何地方訪問變量賦值給window對象。

例如:

function myFunction() { 
    alert("Hello"); 
} 
window.myFunction = myFunction; 

<button onclick="window.myFunction()" >Hi</button> 
相關問題