<a> onclick causes "is not a function" in FF, but IE ok
My code below works great in IE8, but in FF 3.5 clicking the link causes an error that "start_upload is not a function". What is going on? (Of course start_upload is a valid function that works fine in IE)
<div align="left">
<a href="#" onClick="start_upload();"
onMouseOver="start_upload.src='/Images/Buttons/Upload-glow.gif'"
onMouseOut="start_upload.src='/Images/Butto开发者_开发知识库ns/Upload.gif'">
<img src="/Images/Buttons/Upload.gif" id="start_upload" width="90" height="25" border="0"></a>
</a>
</div>
That is because of the way on....
events are handled, or are standardly supposed to be handled. The context of the onclick
inline function is the <a>
element to which it was attached, then its parent, then its parent, so on until document
and window
. Since IE supports referencing items by ID (and FF should, but still don't do it) it works. However, it's correct anyways - start_upload
is not a function. It's an image. What do you intend start_upload();
to do, exactly? You can set its src
and that's correct, but you cannot invoke an element as a function.
What's going on is that IE is violating the ECMAScript spec. When you do start_upload
there it resolves it to either a function or an element depending on whether it's followed by ()
or not. In Gecko start_upload
in that situation resolves to the element in all cases, and then you're trying to call an element.
Somehow,your code is running smoothly in Firefox also (assumed that you have define start_upload function). Here is my code which works fine. Also see, you have close </a>
two times (that should not be a problem).
<body>
<div align="left">
<a href="#" onClick="start_upload();"
onMouseOver="start_upload.src='/Images/Buttons/Upload-glow.gif'"
onMouseOut="start_upload.src='/Images/Buttons/Upload.gif'">
<img src="/Images/Buttons/Upload.gif" id="start_upload" width="90" height="25" border="0">
</a>
</div>
</body>
</html>
<script>
function start_upload()
{
alert ("a");
}
</script>
精彩评论