想要在页面加载完的时候动态生成脚本代码,主要是一个按钮的onclick事件,从DHTML电子书上看到的例子是: 
<HTML> 
<SCRIPT> 
function insertScript(){ 
var sHTML="<input type=button onclick=" + "go2()" + " value='Click Me'><BR>"; 
var sScript="<SCRIPT DEFER>"; 
sScript = sScript + "function go2(){ alert('Hello from inserted script.') }"; 
sScript = sScript + "</SCRIPT" + ">"; 
ScriptDiv.innerHTML = sHTML + sScript; 

</SCRIPT> 
<BODY onload="insertScript();"> 
<DIV ID="ScriptDiv"></DIV> 
</BODY> 
</HTML> 
运行正常。 
我的代码如下,运行不行,事件没反映,请教各位啊,谢谢了: 
<HTML> 
<SCRIPT> 
function AddEvent() 
{var sScript="<SCRIPT DEFER>"; 
sScript = sScript+ 
" var o = document.getElementById('Test');o.onclick = go2;"; 
sScript = sScript+" function go2(){ alert('Hello from inserted script.'); } "; 
sScript = sScript + " </SCRIPT" + ">"; 
var scrdiv = document.getElementById('ScriptDiv'); 
scrdiv.innerHTML = sScript; 
var scrdiv = document.getElementById('ScriptDiv'); 
scrdiv.innerHTML = sScript ; 

</SCRIPT> 
<BODY onload="AddEvent();"> 
<input type="button" id="Test" value="Test"> 
<DIV ID="ScriptDiv"> 
</DIV> 
</BODY> 
</HTML>

解决方案 »

  1.   

    天啊,你看的是什么书,建议你买javascript高级程序设计,动态执行字符串的js代码用eval方法就可以了,但是不得已不要这样做,我想主要是代码清晰和可维护的原因
      

  2.   

    <HTML> 
    <SCRIPT> 
    function AddEvent() 
    {} 
    function go2(){
    alert('Hello from inserted script.'); 
    }
    </SCRIPT> 
    <BODY onload="AddEvent();"> 
    <input type="button" id="Test" onclick="go2()" value="Test"> 
    </BODY> 
    </HTML>
    Body onload的时候Test还没有加载完毕,所以并不能直接操作
    而且,eval()的确是可以动态执行字符串的最好办法
    你的方法有时候由于script加载运行需要的时间问题,会造成错误