jsFiddle 在 Chrome 中无法正常工作

4
最近我用以下代码创建了一个fiddle——

HTML

<button onclick="action();">click me<img src="http://dummyimage.com/200x200/000000/fff.gif&text=Image+1" width="200px" id="ImageButton1"></button>

JS

function action ( )
{

if(document.getElementById("#ImageButton1").src == 'http://dummyimage.com/200x200/000000/fff.gif&text=Image+1' )
document.getElementById("#ImageButton1").src = 'http://dummyimage.com/200x200/dec4ce/fff.gif&text=Image+2';
else
document.getElementById("#ImageButton1").src = 'http://dummyimage.com/200x200/000000/fff.gif&text=Image+1';
}

Fiddle链接 - http://jsfiddle.net/QVRUG/4/

这段代码可以在我的本地html文件和FF中运行,但在chrome控制台中会报错 -

Uncaught ReferenceError: action is not defined 

我进一步调查了这个错误并发现 - “在onload函数中定义的函数引用错误”
因此,我也尝试了以下方法 -
window.action = function(){...code here...};

但是没有运气 :(
请告诉我为什么这种行为在Chrome中无法正常工作,而其他浏览器可以。请不要仅仅提供一个修补程序让fiddle工作,因为我还对这种行为感兴趣。在这种情况下,有描述性的答案(带有相关链接以便进一步学习)会受到赞赏,这样我就可以在我的项目中正确地进行移动。
如果问题不正确,请告诉我,我会将其删除(尽管我已经尽力使问题干净明了)。

框架和扩展 = jQuery 1.7.2 - Sameer H. Ibra
1
@SameerH.Ibra 我知道我可以用jQuery来管理它,但这一次我只想用JS..没有标记为jQuery。 - swapnesh
1个回答

5
这是因为在你的jsFiddle中,“语言”设置为Javascript 1.7
为什么只有在Firefox中有效?
根据版本历史记录1.7仅在Mozilla Firefox浏览器中得到支持,因此它只能在Firefox中工作而不能在其他浏览器中工作。
解决方案:
在jsFiddle的语言部分将语言从Javascript 1.7更改为Javascript,就可以正常工作了。我猜你一定是特意将其更改为1.7,因为默认情况下通常只是Javascript(如果将代码粘贴到新的jsFiddle中,它将按预期工作)。 jsFiddle示例。

谢谢回答,我想我无意中改变了它..所以我相信代码中没有我需要知道的魔法else吗? - swapnesh
@swapnesh 请查看这个链接 - http://en.wikipedia.org/wiki/JavaScript#Version_history - 1.7版本只被Mozilla支持,因此它只能在Firefox中工作,而不能在其他浏览器中工作。 - dsgriffin
1
哦,哇...谢谢您提供的信息..我现在会记住这些东西的 :) - swapnesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接