jsp代码如下:
<td><%= lineOperMenu.replaceFirst("name=\"LINE_OPER\" id=\"LINE_OPER\"", "name=\"LINE_OPER"+i+"\" id=\"LINE_OPER"+i+"\" dataType=\"Require\" msg=\"请选择"+i+"。\"") %></td>这里的lineOperMenu为一个select.我想把这段代码放到js中应该怎么改,下面那样写好像不行。newcell.innerHTML='<%= lineOperMenu.replaceFirst("name=\"LINE_OPER\" id=\"LINE_OPER\"", "name=\"LINE_OPER"+i+"\" id=\"LINE_OPER"+i+"\" dataType=\"Require\" msg=\"请选择"+i+"。\"") %>';

解决方案 »

  1.   

    好像不行提示了什么错误呢?
    检查下newcell是不是dom节点对象
      

  2.   

    <% %>  ?
    js应该不能这么操作 。
      

  3.   

    lineOperMenu.replaceFirst这个方法是干什么的啊 ?
      

  4.   

    replaceFirst是字符串替换函数,js中貌似只有replace,这个在这里应该怎么用?
      

  5.   

    newcell.innerHTML='<%= lineOperMenu.replaceFirst("name=\"LINE_OPER\" id=\"LINE_OPER\"", "name=\"LINE_OPER"+i+"\" id=\"LINE_OPER"+i+"\" dataType=\"Require\" msg=\"请选择"+i+"。\"") %>';这句不能放到.js文件里面,放在动态页<script>标签块里面是没问题的,因为.js文件不支持动态脚本
      

  6.   

    谢谢楼上的回答,我描述错误了,我是放在JSP文件里的<script>的,
    <script type="text/javascript">//表格底部新增一行
    function add_xianlu(){ 
         i++;   
         newRow=document.all.bxsq.insertRow(-1);   //这里是-1表示从尾部插入,如果值为0表示从头部插入。
         newcell=newRow.insertCell(); 
         newcell.innerHTML='<div align="center"><%= lineOperMenu.replaceFirst("name=\"LINE_OPER\" id=\"LINE_OPER\"", "name=\"LINE_OPER"+i+"\" id=\"LINE_OPER"+i+"\" dataType=\"Require\" msg=\"请选择"+i+"。\"") %></div>';  
    }   
    </script>现在的问题就是这样还出错
      

  7.   

    是不是你的
    <%= lineOperMenu.replaceFirst("name=\"LINE_OPER\" id=\"LINE_OPER\"", "name=\"LINE_OPER"+i+"\" id=\"LINE_OPER"+i+"\" dataType=\"Require\" msg=\"请选择"+i+"。\"") %>这块代码里面输出了换行空白符或者单引号字符?这些都会导致字符串不闭合,需要用动态脚本替换掉换行空白符号,然后对单引号进行转移替换,将'替换为\'
      

  8.   

    String lineOperMenu = null;lineOperMenu = 
    "
    <select name="DLINE_OPER" id="LINE_OPER" style="width:186px;">
    <option value="" selected="selected">=========请选择=========</option>
    <option value="OFFICE">办公室</option>
    <option value="TECHNOLOGY_DEPT">技术部</option>
    </select>
    ";<td><%= lineOperMenu.replaceFirst("name=\"LINE_OPER\" id=\"LINE_OPER\"", "name=\"LINE_OPER"+i+"\" id=\"LINE_OPER"+i+"\" dataType=\"Require\" msg=\"请选择"+i+"。\"") %></td>这段代码在JSP中是能工作的,现在的问题是放到<script>里就不能工作了。不知道应该怎么改?
      

  9.   

    这里的i是一个全局变量,我改成下面那样还是不行,请指教,谢谢!newcell.innerHTML='<div align="center"><%= lineOperMenu.replaceFirst("name=\"LINE_OPER\" id=\"LINE_OPER\"", "name=\"LINE_OPER'+i+'\" id=\"LINE_OPER'+i+'\" dataType=\"Require\" msg=\"请选择'+i+'。\"") %></div>';
      

  10.   

     newcell=newRow.insertCell(); 
         newcell.innerHTML='<div align="center"><select name="LINE_OPER'+i+'" id="LINE_OPER'+i+'" dataType="Require" msg="请选择线路运营商'+i+'。" style="width:153px;">
    <option value="" selected="selected">=======请选择=======</option>
    <option value="DX">电信</option>
    <option value="LT">联通</option>
    <option value="YD">移动</option>
    <option value="TT">铁通</option>
    </select>
    </div>';客户端生成的信息是这样的。也就是如何innerHTML一个select。
      

  11.   

    不是告诉过你了,你这样已经换行了,导致字符串未闭合,替换lineOperMenu变量中的换行符号没用过java,不知道转义对不对
    lineOperMenu ="<select name=\"DLINE_OPER\" id=\"LINE_OPER\" style=\"width:186px;\"><option value=\"\" selected=\"selected\">=========请选择=========</option><option value=\"OFFICE\">办公室</option><option value=\"TECHNOLOGY_DEPT\">技术部</option></select>";
      

  12.   

    浅谈javascript 性能优化 
      

  13.   

    试试用
    newcell.innerText='<%= lineOperMenu.replaceFirst("name=\"LINE_OPER\" id=\"LINE_OPER\"", "name=\"LINE_OPER"+i+"\" id=\"LINE_OPER"+i+"\" dataType=\"Require\" msg=\"请选择"+i+"。\"") %>';
      

  14.   

    试试:
    newcell.innerHTML='<%= lineOperMenu.replaceFirst("name=\"LINE_OPER\" id=\"LINE_OPER\"", "name=\"LINE_OPER"+i+"\" id=\"LINE_OPER"+i+"\" dataType=\"Require\" msg=\"请选择"+i+"。\"").replaceAll("[\r\n]+", "") %>';