不考虑SEO,只想把网站头部、网站底部、导航菜单、各页面广告写在JS里,方便全站生成,日后随时可以修改JS来改变广告、头部、底部等。之前用的是var html = ""的方式,然后在html页面调用document.writeln(html)来调用,写在function会不会好一点?还是一样的性质?如果document.writeln不调用,是不是var html并没有执行?我是担心代码多了影响速度,希望页面没有调用的直接跳过。

解决方案 »

  1.   

    如果你分成多个js文件,靠链接进来直接document.writeln(html),这本身就增加了服务器的请求。
    所以建议把所有代码放到同一个js文件里,在网页最下面调用,每个需要调用的地方用div id注明,最后用id.innerHTML来显示内容。例如:
    <div id="menu"></div>
    ....
    <div id="ad"></div>
    ...
    <div id="xxx"></div>
    <script src="js.js"></script>
    <script>makhtml("menu,ad,xxx")</script>
    js.js代码:
    function makhtml(str){
      if(str.indexOf("menu")!=-1){
        document.getElementById("menu").innerHTML="xxxxx";
      }
      if(str.indexOf("ad")!=-1){
        document.getElementById("ad").innerHTML="xxxxx";
      }
      if(str.indexOf("xxx")!=-1){
        document.getElementById("xxx").innerHTML="xxxxx";
      }
      if(str.indexOf("??")!=-1){
        document.getElementById("??").innerHTML="xxxxx";
      }
    }
      

  2.   


    谢谢xzy21com我目前是这样的:
    <script src="js.js"></script>
    头部:<script>document.writeln(header)</script>
    底部:<script>document.writeln(footer)</script>js.js
    var header = '<div>'+
                 '头部代码'+
                 '</div>';
    var footer = '<div>'+
                 '底部代码'+
                 '</div>';
    var test = '111'+
               '222'+
               '333'+
               '444'+
               '555'+
               '666'+
               '777';这个和你的代码是不是区别就在于一个先加载JS,一个先使显示内容再加载JS?只要没有用document.writeln调用,不会执行代码的吧?比如test就没有执行?代码再长都不要紧吧?ps:主要是给别人的代码,直观一点方便他修改。
      

  3.   

    我那方法适合先显示网页主内容再显示JS内容
    你的适合加载到那就显示那的JS,不过你的全是合局变量不好,不管有没有执行都已经写入内存,所以不是不管多长都没问题。写成函数吧。
      

  4.   

    谢谢,你指的是写在function里面?然后xx()调用出来?这样如果前台页面没有调用,是不是函数里面的代码就没有写入内存?
      

  5.   

    谢谢calmcrime!
    这是个头疼的问题,只能把一些不常用的代码在放在另外一个JS里单独调用了。。
      

  6.   

    把写头部、底部之类的代码封装到一个一个的方法里面,换成function调用方式,哪个页面需要就引入对应的js文件然后调用方法
      

  7.   

    谢谢liukewengx!
    我现在是按照2楼xzy21com的方法,把HTML全部分成 header、footer、topad、bottomad、float等几个部分,2楼的方法只要makhtml没有调用的,也没有写入内存是么?很想清楚这种方式和function的读写区别。希望前台页面没有调用的就绕过,不要把里面的代码也写入内存。