2013-01-11 130 views

回答

4

您需要的jsfiddle禁用框架選項JavaScript來的工作

DEMO

function doSomething() { 
    alert('Hello!'); 
} 
+1

學習了JSFiddle的一些... – JVerstry

1

你的功能dosomeThing()沒有在 頁面定義只需更換頭標記與此一

<head> 
    <script> 
     function doSomething() { 
    alert('Hello!'); 
} 
    </script> 
    </head> 

,然後再次嘗試

+0

是不是它的JSFiddle Javascript框的目的,以幫助定義這些功能? – JVerstry

+0

但您尚未在您的HTML中定義它 – NoNaMe

5

這是因爲doSomething()功能沒有在HTML頁面中定義。在jsfiddle中,您的函數(在js窗格中)由jquery的文檔onload事件封裝。 (請參閱jsfiddle左側的設置)。所以其執行的這個樣子,

$(document).ready(function() { 
    function doSomething() { 
     alert('Hello!'); 
    } 
}); 

瞭解其包裹。它不可訪問。要修復它,您應該將其分配給window對象。 在JS窗格寫成

window.doSomething=function() { 
    alert('Hello!'); 
} 

它會工作


其建議大家不要使用HTML元素的屬性onclick功能。它更好地分配事件處理程序與JS。

$("img").click(function(){ 
    alert("Hello"); 
}); 
+0

對於臨時投票表示抱歉,SO在我的手機上顯得很奇怪。 – 11684

4

這是一個 「小提琴-事」。從「Choose Framework」字段中的第一個選擇中選取nowrap (head)

3

JsFiddle爲您做的是爲您創建<HTML>,<head><body>標籤。您不應該將它們包含在您的HTML中,因爲這會在JsFiddle處理完標記後無效。它還將JS包裝在文檔的onload事件中。因此,您的功能沒有像您想象的那樣在根範圍內定義,但在document.onload函數的範圍內,並且您無法從主體範圍內訪問它,因爲那不在函數內部。我將JsFiddle屬性'wrap in'改爲'no wrap(head)',它工作正常。

0

以下是您的完整代碼。只需複製並粘貼您的編輯器。它是

<!doctype html> 
<html lang='en'> 
<head> 
<meta charset='utf-8'> 
<title>Javascript Events</title> 
<script type='text/javascript'> 
window.onload = function() { 
    var image_one = document.getElementById('imageOne'); 
    var image_two = document.getElementById('imageTwo'); 

    image_one.onclick = function() { 
     alert('Hello!'); 
    } 


    image_two.onclick = function() { 
     alert('Hello!'); 
    } 


} 
</script> 
</head> 
<body> 
    <img id="imageOne" src="http://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/White_and_yellow_flower.JPG/320px-White_and_yellow_flower.JPG" /> 
    <img id="imageTwo" src="http://upload.wikimedia.org/wikipedia/en/7/70/Example.png" /> 
</body> 
</html> 
相關問題