2012-09-27 64 views
0

我是javascript中的新手。正如标题所说,我试图从另一个javascript函数生成的html中调用javascript函数。以下是此代码的简单版本:从另一个javascript函数生成的html调用javascript函数

<HTML> 
    <HEAD> 
    <SCRIPT language="JavaScript"> 
     function myFunction1() 
     { 
     var html_text = "<HTML><BODY><FORM><INPUT type=\"button\" onClick= 

\"myFunction2()\" value=\"function2\" /></FORM></BODY></HTML>"; 
     document.write(html_text); 
     document.close(); 
     } 

     function myFunction2() 
     { 
     alert("function2 called!"); 
     } 
    </SCRIPT> 
    </HEAD> 
    <BODY> 
     <FORM><INPUT type="button" onClick="myFunction1()" value="function1" 

/></FORM> 
    </BODY> 
</HTML> 

当我运行萤火虫时,出现错误提示“m​​yFunction2未定义”。我想我必须把myFunction2放在由myFunction1生成的html代码中。所以我改变了我这样的代码:

<HTML> 
    <HEAD> 
    <SCRIPT language="JavaScript"> 
     function myFunction1() 
     { 
     var html_text = "<HTML><HEAD><SCRIPT language=\"JavaScript 

\">function myFunction2(){alert(\"function2 called!\");} 

</SCRIPT></HEAD><BODY><FORM><INPUT type=\"button\" onClick=\"myFunction2()\" 

value=\"function2\" /></FORM></BODY></HTML>"; 
     document.write(html_text); 
     document.close(); 
     } 

     /* function myFunction2() 
     { 
     alert("function2 called!"); 
     } */ 
    </SCRIPT> 
    </HEAD> 
    <BODY> 
     <FORM><INPUT type="button" onClick="myFunction1()" value="function1" 

/></FORM> 
    </BODY> 
</HTML> 

但是,这种变化后,我得到了一些凌乱的结果和萤火虫说:“未终止的字符串字面HTML_TEXT变种= ...”。有什么建议么? 另外,我的实际myFunction2真的很大,如果我不得不将它插入到myFunction1生成的html中,是否有一种很好的方法来放置它?另外,教师不希望我们使用单独的文件。谢谢!

+1

[您不能在javascript中使用''](http://www.wwco.com/~wls/blog/2007/04/25/using-script-in-a-javascript-文字/)。 – jbabey

+2

你不能使用“内部”字符串,并且'相同'。您需要转义字符串内的引号。 –

+0

你可能不会在页面渲染后使用document.write – mplungjan

回答

0

这将工作

<HTML> 
    <HEAD> 
    <SCRIPT language="JavaScript"> 
     function myFunction1() 
     { 
     var html_text = "<HTML><BODY><sc"+"ript type=\"text/javascript\">function myFunction2(){alert('im 2')}</sc"+"ript><FORM><INPUT type=\"button\" onClick=\"myFunction2()\" value=\"function2\" /></FORM></BODY></HTML>"; 
     document.write(html_text); 
     document.close(); 
     } 

     function myFunction2() 
     { 
     alert("function2 called!"); 
     } 
    </SCRIPT> 
    </HEAD> 
    <BODY> 
     <FORM><INPUT type="button" onClick="myFunction1()" value="function1" 

/></FORM> 
    </BODY> 
</HTML> 

请注意,您不能在sttring包括"<script>",你必须打破它以"<scr" + "ipt>"

+0

演示http://jsfiddle.net/WGJx9/ –

+1

你也可以在页面渲染后document.write – mplungjan

+0

同意,但它只是工作=)) –