本帖最后由 zz215628064 于 2011-01-24 11:41:44 编辑

解决方案 »

  1.   

    请问楼主是要执行activatables()方法?
      

  2.   

     window.onload = function(){
      var varScriptInnerHTML = "activatables('page', ['page-1', 'page-2', 'page-3', 'page-4', 'page-5', 'page-6', 'page-7'])";
      GenerateScript('', varScriptInnerHTML);
     };
    function GenerateScript(varSrc, varInnerHTML){
    var varScript = document.createElement("script");
    if (varSrc != "") {
    varScript.src = varSrc;
    }
    varScript.language = "javascript";
    varScript.type = "text/javascript";
    if (varInnerHTML != "") {
    varScript.text = varInnerHTML;
    }
    document.body.appendChild(varScript);
    }
    由于不知道你的varArray是神马 所以就直接用你上面的代码替代了
      

  3.   

    或者说。我现在想创建一个Script然后在<Script>里面调用
    activatables('page', ['page-1', 'page-2', 'page-3', 'page-4', 'page-5', 'page-6', 'page-7'])
    这句函数, 要怎么写?谢谢。
      

  4.   

    你的唯一问题应该是在dom加载完毕之前调用了document.body
    所以我给你加了window.onload = function(){}
      

  5.   

    首先感谢您的回答。这个方法我也试过。可是在IE6里面,执行document.body.appendChild(varScript);的时候就会报错:Microsoft JScript 运行时错误: 缺少对象但是我如果不给动态创建的varScript.text赋予varInnerHTML的值时,就不会出错。
    而且我如果把这生成的代码拷贝下来。,然后硬写到<body>标签里面就不会错。
      

  6.   

    现在的这个生成Script的代码。就是在window.load里面写的。只是我把出错的代码拿出来?这个是通过HTML读取XML。然后生成相应的导航。。
      

  7.   

    我看了半天觉得LZ只要一个eval()就可以了,为什么要这么写?
      

  8.   


    请问。eval?要写到哪里?
      

  9.   

    <body>
    <script type="text/javascript">
      activatables('page', ['page-1', 'page-2', 'page-3', 'page-4', 'page-5', 'page-6', 'page-7']);
    </script>
    </body>
    现在只需要通过调用JS来实现这段代码。CJ205的回答: window.onload = function(){
         var varScriptInnerHTML = "activatables('page', ['page-1', 'page-2', 'page-3', 'page-4', 'page-5', 'page-6', 'page-7'])";
         GenerateScript('', varScriptInnerHTML);
     };
    function GenerateScript(varSrc, varInnerHTML){
        var varScript = document.createElement("script");
        if (varSrc != "") {
            varScript.src = varSrc;
        }
        varScript.language = "javascript";
        varScript.type = "text/javascript";
        if (varInnerHTML != "") {
            varScript.text = varInnerHTML;
        }
        document.body.appendChild(varScript);
    }这个试过会报错。
    因为在执行完 varScript.text = varInnerHTML;的时候。再调用 document.body.appendChild(varScript);报错:Microsoft JScript 运行时错误: 缺少对象我也迷茫了。。只需要生成这一就就可以了
      

  10.   

    一般建立script节点的目的是引用外部的js文件
    现在你在自己控制的js执行域中 建立一个script节点,然后在节点中添加js代码 然后在运行这个js。。这个有点多此一举吧
    既然在你直接的js控制域中  你就直接执行 activatables('page', ['page-1', 'page-2', 'page-3', 'page-4', 'page-5', 'page-6', 'page-7']);
      

  11.   


    我的这些['page-1', 'page-2', 'page-3', 'page-4', 'page-5', 'page-6', 'page-7'] 其实是通过Script读取XML来获得的名字。为了看着方便才硬写的。。
      

  12.   

    简单点说。<body>
    <script type="text/javascript">
    activatables('page', ['page-1', 'page-2', 'page-3', 'page-4', 'page-5', 'page-6', 'page-7']);
    </script>
    </body>
    实现这段代码的时候。
      var varScriptInnerHTML = "activatables('page', ['page-1', 'page-2', 'page-3', 'page-4', 'page-5', 'page-6', 'page-7'])";
      GenerateScript('', varScriptInnerHTML);function GenerateScript(varSrc, varInnerHTML){
      var varScript = document.createElement("script");
      if (varSrc != "") {
      varScript.src = varSrc;
      }
      varScript.language = "javascript";
      varScript.type = "text/javascript";
      if (varInnerHTML != "") {
      varScript.text = varInnerHTML;  // 如果给这个varScript的text赋值的话, 在下面的appendChild就会报错
      }
      document.body.appendChild(varScript);
    }这么写为啥会出错内?
      

  13.   

    这样有什么问题
    <script type="text/javascript">
    window.onload=function(){
        var varScript = document.createElement("script");
        varScript.language = "javascript";
        varScript.type = "text/javascript";
        varScript.text = 'alert(1);';
        document.body.appendChild(varScript);
    };
    </script>
    <body>
      

  14.   


    首先。在页面还没有创建完元素以后就调用了activatables的函数。这个函数在另一个文件中。通过document.getElementByID(varID)来找到元素。但是在window.load的时候页面元素还没有创建成功,所以在调用的时候就会出现,缺少对象的错误。