我动态加载了1 个JS之前,要把前一个加载的JS删除。删除代码没有错误提示。可之后,前一个JS里的函数还是可以用。为什么?怎么解决这个?

解决方案 »

  1.   

    js文件一旦加载,就无法“卸载”了,“删除”操作只能从DOM树中删除script元素节点,想要让已经定义的函数不能再执行,可以这样做:
    function demo() {
    alert('DEMO');
    }
    /*方法一:把已定义的函数对象赋值为null,但以后再调用demo()函数会报错
    demo = null;
    demo();
    */
    demo = new Function(); //方法二:将已定义的函数赋值为一个新的函数对象实例
    demo(); //再调用demo()对象时不报错,但也不会执行任何操作
      

  2.   

    function jsLoad(jsFile) {
        Tibetinput_OverRequest("loadJS");
       
        var fileref=document.createElement('script'); //创建script标签
    fileref.id = "loadJS"   //给script标签定义ID
    fileref.setAttribute("type","text/javascript"); 
    fileref.src = jsFile;
    document.body.appendChild(fileref);//插入body标签中
    }
    /**删除加载的JS*/
    function Tibetinput_OverRequest(ID){ //ID为script标签的ID
    try{
    var Tibetinput_js  = Tibetinput_getObj(ID);//id对应的document对象
    document.body.removeChild(Tibetinput_js);//删除ID的对应标签
    }
    catch(e){}
    }
    //获取id对应的document对象
    function Tibetinput_getObj(id) {//所有的情况都列出来了 不会出错··呵呵
        if (document.getElementById) return document.getElementById(id);
        else if (document.all) return document.all[id]; 
        else if (document.layers) return document.layers[id];
        else {return null;}
    }/*用户点击事件*/
    function User_onClick(a){
      switch (a){
       case 1:
        jsLoad('jscript01.js');
        break;
       case 2:
        jsLoad('jscript02.js');
        break;
       default:
        break;
    }