最近我用以下代码创建了一个小提琴 -
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
我进一步调查了错误并找到了 -
Uncaught ReferenceError for a function defined in an onload function
所以我也试过了 -
window.action = function(){...code here...};
但没有运气:(
请告诉我这种行为为什么它不能用于Chrome并为其他人工作。请不要只提供一个补丁来使小提琴工作,因为我也对这种行为感兴趣。描述性答案(以及进一步研究的相关链接)在案例中非常受欢迎,以便我可以在其余项目中正确移动。
如果问题没有出现在轨道上,请告诉我,我会将其删除(尽管我会尽力使问题清晰明确)
答案 0 :(得分:4)
这是因为你的jsFiddle中的“语言”设置为Javascript 1.7
。
为什么这只适用于Firefox?
According to the versioning history,1.7
只在Mozilla Firefox浏览器中得到支持,因此它可以在那里工作,而不是在其他浏览器中工作。
<强>解决方案:强>
将jsFiddle的语言部分中的语言从Javascript 1.7
更改为Javascript
,这样就可以了。我猜你必须将它改为1.7,因为默认值通常只是Javascript
(你可以通过将代码粘贴到一个新的jsFiddle中来看到它,它会按预期工作)。