4

最近我用以下代码创建了一个小提琴 -

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';
}

小提琴链接- http://jsfiddle.net/QVRUG/4/

此代码FF在我的本地文件中运行,但在控制台html中引发错误-chrome

Uncaught ReferenceError: action is not defined 

我进一步调查了错误并发现 -

在 onload 函数中定义的函数的未捕获 ReferenceError

所以我也试过这个 -

window.action = function(){...code here...};

但没有运气:(

请让我知道这种行为为什么它不能在 chrome 中工作并为其他人工作。请不要只提供一个补丁来使小提琴工作,因为我也对这种行为感兴趣。描述性答案(带有进一步研究的相关链接)非常感谢这个案例,这样我就可以在我的其余项目中正确移动。

如果问题不在正轨上,请告诉我,我会记下它(尽管我尽我最大的努力使问题清晰明了)

4

1 回答 1

5

这是因为“语言”设置为Javascript 1.7在您的 jsFiddle 中。

为什么这只适用于 Firefox?

根据版本控制历史1.7仅在 Mozilla Firefox 浏览器中受支持,因此它在那里工作而不在其他浏览器中工作。

解决方案:

在 jsFiddle 的Languages部分中将语言从 更改为Javascript 1.7,它将起作用。我猜您一定是专门将其更改为 1.7,因为默认值通常只是(您可以通过将代码粘贴到新的 jsFiddle 中来看到这一点,它将按预期工作)。JavascriptJavascript

jsFiddle 示例。

于 2013-05-19T11:31:23.780 回答