想通过系统实现生成列表的时候,同时生成一个JS调用文件例如转换成以下形式document.write("<ul>");
document.write("<li><span>11-19</span><a href='index.php?act=info&amp;50539 '>我的《创世OL》生活照</a></li>");
document.write("<li><span>11-19</span><a href='index.php?act=info&amp;50538 '>上班族的福音——《创世OL》宠物代练</a></li>");
document.write("<li><span>11-19</span><a href='index.php?act=info&amp;50537 '>《创世OL》新危机——啸天大将</a></li>");
document.write("<li><span>11-19</span><a href='index.php?act=info&amp;50536 '>《创世OL》人生四大喜之他乡遇故知</a></li>");
document.write("<li><span>11-19</span><a href='index.php?act=info&amp;50535 '>《创世OL》进门有“礼” 千万Q币Q钻还送666...</a></li>");
document.write("</ul>");我现在用的方法是……
$html_js="<!--\n";
$html_js.="document.write(\"<ul>\");\n";
foreach($newslist as $val){ $html_channel=$_POST['channel']==1?"[".$val->getNames()."]":null;
$html_url="<a href='http://".$_SERVER ['HTTP_HOST']."/index.php?act=info&amp;".$val->getId()." ".$html_target."'>".iSubStr($val->getSubject(),$_POST['maxfont'])."</a>";
$html_author=$_POST['author']==1?"[".$val->getAuthor()."]":null;
$html_views=$_POST['views']==1?"[".$val->getViews()."]":null;
switch($_POST['df']) {
case "1":  $html_dateline=date("Y-m-d",$val->getDateline()); break;
case "2":  $html_dateline=date("m-d",$val->getDateline()); break;
case "3":  $html_dateline=date("Y-m-d T",$val->getDateline()); break;
} $html_js.="document.write(\"<li><span>".$html_dateline."</span>".$html_channel.$html_url.$html_author.$html_views."</li>\");\n";
}
$html_js.="document.write(\"</ul>\");\n";
$html_js.="-->";
这样 如果需要改变生成JS的样式的话……很麻烦
希望能得到一个方法 可以直接把字符串转换成JS文件……多谢了

解决方案 »

  1.   

    啥意思,把一串东西生成js文件?
    file_put_contents('xxxx.js','js语句串')就搞定了。
      

  2.   

    感谢LS的回复我现在就是想 便捷的得到  file_put_contents('xxxx.js','js语句串')中的 js语句串……
      

  3.   

    封装成函数,类似function generate_js_dw($str){
        return "document.write(\"$str\");\n";
    }
    function generate_js_start(){
        return generate_js_dw('<ul>');
    }
    function generate_js_stop(){
        return generate_js_dw('</ul>');
    }
    function generate_js_content($data){
    /*
                $html_channel=$_POST['channel']==1?"[".$val->getNames()."]":null;
                $html_url="<a href='http://".$_SERVER ['HTTP_HOST']."/index.php?act=info&amp;".$val->getId()." ".$html_target."'>".iSubStr($val->getSubject(),$_POST['maxfont'])."</a>";
                $html_author=$_POST['author']==1?"[".$val->getAuthor()."]":null;
                $html_views=$_POST['views']==1?"[".$val->getViews()."]":null;
                switch($_POST['df']) {
                            case "1":         $html_dateline=date("Y-m-d",$val->getDateline());        break;
                            case "2":         $html_dateline=date("m-d",$val->getDateline());            break;
                            case "3":         $html_dateline=date("Y-m-d T",$val->getDateline());        break;
                }*/
    // 以上代码需作适当修改    return generate_js_dw($str);
    }
      

  4.   

    把你的代码丢一个function里就行了,然后带个样式flag
    function genJs($data,$showType='list')
    {
      switch($showType)
      {
         case 'list':
         //ul列表样式显示
         //你的代码
         break;
         case 'table':
         //table类标样式
         //table列表样式的代码
         break;
      }
      return $jscode;
    }
    然后在某个配置文件,定义好默认的显示样式,方便修改
    比如
    config.php
    ================
    $config['listtype'] = 'list';//如果要全站改为table样式的列表,就在这里设置就行了.调用的时候require('config.php');
    file_put_contents('xxxx.js',genJs($newlist,$config['listtype']));