键入错误,而不是函数

时间:2016-03-04 11:21:37

标签: javascript typeerror

我已经继承了一些Javascript,这个JS曾经有效,但由于某种原因它不再有效。

我有以下脚本,请记住我已将其删除并仅列出了有问题的部分:

function top_frame() {
    top_frame = top.frames[0].document;
    top_frame.write('<HTML><BODY topmargin=0 leftmargin=0 marginheight=0 marginwidth=0><IMG SRC="'+image_url+'/options_top.gif" HEIGHT=25 WIDTH=300></BODY></HTML>')
//  top_frame.write('<HTML><BODY BGCOLOR="#339999"><IMG SRC="images/global/options_top.gif" WIDTH=300 HEIGHT=25 ALT="Product options editor" BORDER="0"></BODY></HTML>')
    top_frame.close();
}
function bottom_frame() {
    bottom_frame = top.frames[2].document;
bottom_frame.write('<HTML><BODY topmargin=0 leftmargin=0 marginheight=0 marginwidth=0><A HREF="javascript:top.update_options()"><IMG SRC="'+image_url+'/options_end.gif" WIDTH=300 HEIGHT=30 ALT="Update and close" BORDER="0"></A></BODY></HTML>')
    bottom_frame.close();
}

</SCRIPT>
<frameset rows="26,*,31" frameborder="NO" border="0" framespacing="0"> 

<frame  src="javascript:top.top_frame()"
            scrolling="NO" marginwidth="0" marginheight="0" frameborder="NO"
            NAME="options_top">

<frame  src="javascript:top.show_start()"
            marginwidth="0" marginheight="0" frameborder="NO" scrolling="auto"
            NAME="options_main">

<frame  src="javascript:top.bottom_frame()" 
            scrolling="NO" marginwidth="0" marginheight="0" frameborder="NO"
            NAME="options_bottom">

</frameset>
</HTML>

我正在页面底部的HTML中调用函数bottom_frame()show_start()top_frame()。但是,我在错误选项卡中看到以下消息:

TypeError: top.bottom_frame is not a function

我在每个函数调用中都看到了这一点。任何人都可以建议问题在这里吗?

2 个答案:

答案 0 :(得分:3)

不要对用于函数名称的变量使用相同的名称

例如,如果您将function a定义为

function a(){a =1};

并调用此a(),它将输出1;

但下次会出错

  

未捕获的TypeError:a不是函数

因为当它被执行时,它将a重新定义为non-function类型值,即1。

答案 1 :(得分:1)

顶层对象上未定义

bottom_frame()。您是全局定义的,因此请使用top进行调用。所以而不是:

top.bottom_frame()

只需致电

bottom_frame()