2013-01-11 129 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> 
相关问题